写好代码问题....?

时间:2010-03-03 15:06:31

标签: java

我正在编写应用,在许多情况下需要直接访问 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 更容易,然后像引用一样传递它。 谢谢!

2 个答案:

答案 0 :(得分:2)

如果您只有一个Main类,并且您的应用程序中只有一个JFrame,我认为您不需要Singleton模式。在这种情况下,静态变量就足够了。现在,为什么需要访问mainFrame?

  • 您是否需要从该mainFrame创建子框架?
  • 您是否需要显示一个消息框,并且您希望其父级是mainFrame?
  • 那个班级你有逻辑吗?

例如,如果mainFrame中有实例方法,并且需要从应用程序的任何位置访问这些方法,则可以将这些方法设为私有,创建公共静态方法,并使这些静态方法获取mainFrame实例,调用私有方法。也许您应该从应用程序中的其他位置删除逻辑并将其添加到mainFrame类。

这完全取决于你对这个mainFrame对象做了什么。在我看来,你所拥有的东西并不坏。

答案 1 :(得分:1)

您可能需要考虑实现Singleton模式。扩展JFrame以生成AppFrame类,并使该类成为Singleton。这通常是不受欢迎的,但它是您要做的事情的解决方案。大多数GUI应用程序都具有MVC体系结构,并且对View的直接访问(即您的JFrame)仅限于Controller类。如果要实现基于GUI的应用程序,可能需要阅读MVC模式。

有关单身人士模式的信息hereInformation on MVC