一个用于许多JButton的ActionListener

Imr*_*ado 5 java swing jbutton actionlistener

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

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

Vin*_*nie 7

在这种情况下,您可以扩展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
    }
  }
Run Code Online (Sandbox Code Playgroud)

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

 Action myAction = new MyAction("button Text", anImage, "Tooltip Text", KeyEvent.VK_A);
 button = new JButton(myAction);
Run Code Online (Sandbox Code Playgroud)

  • @Arno:对我来说似乎没有过度杀戮.1+为好的答案.如果所有按钮都具有相同的文本和操作,您可以创建一个MyAction对象并使用它来创建许多按钮.现在,如果按钮具有不同的标题,那么您可能需要创建一个ActionListener,然后将其添加到多个按钮. (2认同)