我正在编写应用,在许多情况下需要直接访问 mainFrame 。我可以这样做(?):
public class Main {
private static JFrame mainFrame();
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
mainFrame = new JFrame(); //....
});
}
//...
public static JFrame getMainFrame() {
return mainFrame;
}
}
我认为直接访问 mainFrame 更容易,然后像引用一样传递它。 谢谢!
答案 0 :(得分:2)
如果您只有一个Main类,并且您的应用程序中只有一个JFrame,我认为您不需要Singleton模式。在这种情况下,静态变量就足够了。现在,为什么需要访问mainFrame?
例如,如果mainFrame中有实例方法,并且需要从应用程序的任何位置访问这些方法,则可以将这些方法设为私有,创建公共静态方法,并使这些静态方法获取mainFrame实例,调用私有方法。也许您应该从应用程序中的其他位置删除逻辑并将其添加到mainFrame类。
这完全取决于你对这个mainFrame对象做了什么。在我看来,你所拥有的东西并不坏。
答案 1 :(得分:1)
您可能需要考虑实现Singleton模式。扩展JFrame以生成AppFrame类,并使该类成为Singleton。这通常是不受欢迎的,但它是您要做的事情的解决方案。大多数GUI应用程序都具有MVC体系结构,并且对View的直接访问(即您的JFrame)仅限于Controller类。如果要实现基于GUI的应用程序,可能需要阅读MVC模式。
有关单身人士模式的信息here。 Information on MVC