0

我正在用 Java 练习我的 gui 技能,我一直在做菜单和菜单栏。它们对我来说很有意义,但我有一个问题,我可以在哪里了解更多关于它们的信息。

我做过的基本菜单,ActionListener 函数 actionPerformed 必须和菜单在同一个类中,菜单改变的项也必须和菜单在类中。

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

你们发现有用的任何提示、提示或网站都会很棒,在此先感谢。

4

1 回答 1

3

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

  1. 动作的名称和图标
  2. 如果启用或禁用
  3. (对于复选框动作)如果它被选中
  4. 操作的键盘快捷键
  5. 动作监听器的实现

AbstractAction您将在该动作作用于其数据的类中定义一个子类。然后为该操作定义一个 getter,以便您的菜单构建代码可以获取它。您可以将Action直接添加到菜单中 - aMenuItem会自动为其构建。

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

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());
   }
}
于 2012-01-09T17:34:28.390 回答