我刚刚开始使用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);
}
}
我的主要方法中出现错误,说明" mainWindow"无法解决。为什么是这样?是因为我在另一个方法中创建了mainWindow对象?有没有办法解决这个问题,而不将makeWindow()方法中的所有内容都放到main方法中?
答案 0 :(得分:1)
这不起作用,因为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发表评论(共享信用)后,您可以从mainWindow
方法返回makeWindow
:
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);
}
}
答案 1 :(得分:0)
全局创建mainWindow实例/引用
private static JFrame mainWindow;
public static void makeWindow(){
mainWindow = new JFrame();
}