繁体   English   中英

一个用于许多JButton的ActionListener

[英]One ActionListener for many JButtons

我想将ActionListener添加到一组按钮。 是否有任何类包裹按钮? GroupJButtons这样的东西还是更普遍的一组对象? 所以我可以为所有这些设置一个ActionListener 毕竟我并不关心按哪个按钮我只想更改他的文本所以我需要做的就是将它转换为JButton并更改文本。

整个过程会减少1或2中的代码行(如果你使用循环)但我想这样做,因为它听起来逻辑上更好。

在这种情况下,您可以扩展AbstractAction类,并将相同的操作应用于许多按钮。

  class MyAction extends AbstractAction {
       public MyAction(String text, ImageIcon icon,
                  String desc, Integer mnemonic) {
       super(text, icon);
       putValue(SHORT_DESCRIPTION, desc);
        putValue(MNEMONIC_KEY, mnemonic);
   }
   public void actionPerformed(ActionEvent e) {
        //do the action of the button here
    }
  }

然后,对于您希望发生相同事情的每个按钮,您可以:

 Action myAction = new MyAction("button Text", anImage, "Tooltip Text", KeyEvent.VK_A);
 button = new JButton(myAction);

您可以使用它来创建每个按钮

private JButton createButton(String title, ActionListener al) {
    JButton button = new JButton(title);
    button.addActionListener(al);
    return button;
}

这就是处理行动

public void actionPerformed (ActionEvent ae) {
    JButton button = (JButton)ae.getSource();
    button.setText("Wherever you want");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM