代码之家  ›  专栏  ›  技术社区  ›  Picachieu

ItemListener与ChangeListener与ActionListener之比较

  •  1
  • Picachieu  · 技术社区  · 7 年前

    我见过许多使用 ActionListener , ChangeListener ItemListener

    2 回复  |  直到 7 年前
        1
  •  2
  •   VGR    7 年前

    对于JMenuItem,应该使用 Action (这是一种更有效的ActionListener形式):

    Action saveAction = new AbstractAction("Save") {
        @Override
        public void actionPerformed(ActionEvent event) {
            saveDocument();
        }
    };
    saveAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_S);
    saveAction.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("control S"));
    
    saveMenuItem = new JMenuItem(saveAction);
    

    Action showStatusAction = new AbstractAction("Show Status") {
        @Override
        public void actionPerformed(ActionEvent event) {
            boolean selected = (Boolean) getValue(SELECTED_KEY);
            statusBar.setVisible(selected);
        }
    };
    showStatusAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_W);
    showStatusAction.putValue(Action.SELECTED_KEY, true);
    
    showStatusMenuItem = new JCheckBoxMenuItem(showStatusAction);
    

    请注意,只有将Action.SELECTED\u键设置为 true false documentation :

    遵循此属性的组件仅在值不为null时使用该值。例如,如果设置的操作的 SELECTED_KEY JToggleButton ,的 触发器按钮 触发器按钮 的所选状态更改只有当操作的值为非null时,才会将该值设置回该操作 .

    如果坚持直接使用侦听器,itemlister将指示选择状态,因此可以使用它监视JCheckBoxMenuItems和JRadioButtonMenuItems的状态。对于所有其他JMenuItems,使用ActionListener。

    AbstractButton 以及JMenuItem及其子类:

    • 对于JButtons,使用Action。
    • 如果您不愿意使用操作,请将ActionListener用于JButtons,并将ItemListener用于JToggleButtons、jCheckBox和JRadioButtons。

        2
  •  4
  •   Star Rider    7 年前

    监听器
    它们与按钮或菜单一起使用。因此,无论何时单击它们,它都会通知ActionEvent,后者反过来调用actionPreformed(ActionEvent e)函数来执行指定的任务。


    它们与复选框、单选按钮、组合框之类的东西一起使用。
    看看在这个链接中使用带有组合框的ActionListener而不是ItemListener时会发生什么 https://coderanch.com/t/331788/java/add-listener-combo-drop-list .


    这与滑块、颜色选择器和微调器等组件一起使用,在这些组件中,您希望根据该组件中的更改执行操作( https://docs.oracle.com/javase/tutorial/uiswing/events/changelistener.html ).
    http://www.java2s.com/Tutorial/Java/0240__Swing/AddchangelistenertoButtonmodel.htm