我应该将我的Swing组件声明为实例变量,还是仅从函数返回它们?

时间:2010-11-13 18:11:09

标签: java user-interface swing refactoring

我刚刚开始使用JAVA,我试图弄清楚声明变量的最佳实践是什么,尤其是GUI组件。我试图让我的函数尽可能小,但我不确定是否应该将我的所有组件声明为我的GUI类的实例变量。

在这段代码中,我想只是声明gui的主要部分,例如frame,panel,menuBar和菜单本身,但我不确定哪些部分我应该声明为实例变量以及哪些部分应该封装。

class MyClass {

    public JFrame frame;
    public JPanel panel;
    public JMenuBar menuBar;
    public JMenu fileMenu;
    public JMenu editMenu;

    ....
    public void setUpEditMenu() {
          editMenu = new JMenu("Edit");
          editMenu.add(getEditMenuItem());
    }

    public JMenuItem getEditMenuItem() {
          JMenuItem menuItem = new JMenuItem("Preferences");
          return menuItem;
    }
}

1 个答案:

答案 0 :(得分:1)

大多数Java GUI构建器(如Netbeans)将GUI组件声明为实例变量 实际上没有必要封装它们,因为您通常想要访问它们已经封装的属性! 也不要忘记过多函数调用的开销 在我看来,不要过度封装内容。你的代码使用起来要复杂得多,而且很麻烦。