gpt4 book ai didi

java - 无法解析在公共(public)方法中启动的对象?

转载 作者:行者123 更新时间:2023-11-30 06:27:10 24 4
gpt4 key购买 nike

我刚刚开始使用 java,正在开发一个新的 GUI。我制作了一个方法来制作我的 JFrame,设置其默认位置、关闭操作、背景颜色等。

为了整洁起见,我为此创建了一个单独的方法,将其保留在主代码之外。如果我把所有这些东西都放在 main 方法中,我已经知道如何解决这个方法了。

这是代码:

public class Main {

public static void makeWindow(){
JFrame mainWindow = new JFrame();
mainWindow.setVisible(true);
mainWindow.setPreferredSize(new Dimension(400,400));
mainWindow.pack();
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindow.setLocationRelativeTo(null);
}

public static void main(String args[]){
makeWindow();
JPanel mainPanel = new JPanel();
mainWindow.add(mainPanel);
}
}

我的 main 方法中出现错误,提示“mainWindow”无法解析。为什么是这样?是因为我在另一个方法中创建了mainWindow对象吗?有没有办法解决这个问题,而不将 makeWindow() 方法中的所有内容都放入 main 方法中?

最佳答案

这不起作用,因为 mainWindow 仅存在于 makeWindow 方法的上下文中。您可以将其设为静态字段:

public class Main {

private static JFrame mainWindow; // declare it here so it can be seen from your main method.

public static void makeWindow(){
mainWindow = new JFrame();
mainWindow.setVisible(true);
mainWindow.setPreferredSize(new Dimension(400,400));
mainWindow.pack();
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindow.setLocationRelativeTo(null);
}

public static void main(String args[]){
makeWindow();
JPanel mainPanel = new JPanel();
mainWindow.add(mainPanel);
}
}

编辑

正如 @Xing 评论的那样(共享积分),您可以从 makeWindow 方法返回 mainWindow:

public class Main {

public static JFrame makeWindow(){
JFrame mainWindow = new JFrame();
mainWindow.setVisible(true);
mainWindow.setPreferredSize(new Dimension(400,400));
mainWindow.pack();
mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainWindow.setLocationRelativeTo(null);
return mainWindow;
}

public static void main(String args[]){
JFrame mainWindow = makeWindow();
JPanel mainPanel = new JPanel();
mainWindow.add(mainPanel);
}
}

关于java - 无法解析在公共(public)方法中启动的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46956615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com