Java Gui Menubars

时间:2012-01-09 17:10:22

标签: java swing jpanel jmenu jmenubar

我正在练习Java的gui技能,而且我一直在做菜单和菜单栏。 他们对我很有意义,但我有一个问题,我可以在哪里了解更多。

我已经完成的基本菜单,ActionListener函数actionPerformed必须与菜单在同一个类中,菜单正在更改的项目也必须在类中作为菜单。

如果我想要一个影响JPanel的菜单,该菜单由另一个类的构造函数创建并放置在我的框架中..我不确定该菜单如何更改它的组件。

您提供的任何提示,提示或网站都会很有用,非常感谢。

1 个答案:

答案 0 :(得分:3)

我发现将菜单栏操作包装在Action对象中很有用。这封装了:

  1. 操作的名称和图标
  2. 如果启用或禁用
  3. (对于复选框操作)如果已选中
  4. 操作的键盘快捷键
  5. 动作侦听器的实现
  6. 您将在类中定义AbstractAction的子类,该子类的操作数据将作用于该类。然后为该操作定义一个getter,以便您的菜单构建代码可以获取它。您可以将Action直接添加到菜单中 - 自动构建MenuItem

    操作的另一个优点是可以在按钮,工具栏等中使用相同的操作。

    class ModelClass {
       int value;
       Action incAction = new AbstractAction("Increment") {
          public void actionPerformed() {
             value++;
             setEnabled(value < 10);
          }
       };
    
       public Action getIncAction() {
          return incAction;
       }
    }
    
    class UIClass {
       void buildMenu() {
          JMenu menu = new JMenu("Model");
          menu.add(model.getIncAction());
       }
    }