Java Gui菜单栏

Java Gui菜单栏,java,swing,jpanel,jmenu,jmenubar,Java,Swing,Jpanel,Jmenu,Jmenubar,我正在用Java练习我的gui技能,我一直在做菜单和菜单栏。 它们对我来说很有意义,但我有一个问题,那就是我在哪里可以学到更多关于它们的知识 我完成的基本菜单,ActionListener函数actionPerformed必须与菜单在同一个类中,菜单正在更改的项也必须与菜单在同一个类中 如果我想要一个影响JPanel的菜单,该菜单由另一个类的构造函数创建并放置在我的框架中,该怎么办。。我不确定菜单如何改变它的组成部分 任何你们觉得有用的提示、提示或网站都会很好,提前谢谢。我发现将菜单栏操作包装在

我正在用Java练习我的gui技能,我一直在做菜单和菜单栏。 它们对我来说很有意义,但我有一个问题,那就是我在哪里可以学到更多关于它们的知识

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

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


任何你们觉得有用的提示、提示或网站都会很好,提前谢谢。

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

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

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

    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());
       }
    }
    
    class模型类{
    int值;
    Action incAction=新抽象操作(“增量”){
    已执行的公共无效操作(){
    值++;
    设置启用(值<10);
    }
    };
    公共行动getIncAction(){
    回归行动;
    }
    }
    类UIClass{
    void buildMenu(){
    JMenu菜单=新JMenu(“模型”);
    menu.add(model.getIncAction());
    }
    }
    
    我发现在
    操作
    对象中包装菜单栏操作很有用。这包括:

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

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

    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());
       }
    }
    
    class模型类{
    int值;
    Action incAction=新抽象操作(“增量”){
    已执行的公共无效操作(){
    值++;
    设置启用(值<10);
    }
    };
    公共行动getIncAction(){
    回归行动;
    }
    }
    类UIClass{
    void buildMenu(){
    JMenu菜单=新JMenu(“模型”);
    menu.add(model.getIncAction());
    }
    }
    
    试试这个试试这个我想你没有可以给我看的参考资料或例子吧?我查阅了AbstractAction和ActionListener的文档,但我不确定您的想法是如何实现的。我想您没有可以向我展示的参考资料或示例吧?我查阅了AbstractAction和ActionListener的文档,但我不确定您的想法是如何实现的。