我想添加一个ActionListener
到一组按钮。 是否有任何包装按钮的类?像GroupJButtons
或更一般的对象组?所以我可以为他们设置一个ActionListener
。 毕竟我并不在乎哪个按钮被按下,我只是想改变他的文字,所以我需要做的就是将它转换为JButton
并更改文字。许多JButton的一个ActionListener
整个过程会减少1或2(如果你使用循环)的代码行,但我想这样做,因为它听起来逻辑上更好。
我想添加一个ActionListener
到一组按钮。 是否有任何包装按钮的类?像GroupJButtons
或更一般的对象组?所以我可以为他们设置一个ActionListener
。 毕竟我并不在乎哪个按钮被按下,我只是想改变他的文字,所以我需要做的就是将它转换为JButton
并更改文字。许多JButton的一个ActionListener
整个过程会减少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);
非常好的解决方案!但是,这似乎有点矫枉过正?只是为了一组按钮? – 2012-12-09 14:46:00
@Arno:它对我来说似乎并不过分。 1+为好的答案。如果所有按钮都具有相同的文本和操作,则可以创建一个MyAction对象并使用它创建多个按钮。现在,如果按钮的标题不同,则可能需要创建一个ActionListener,然后将其添加到多个按钮。 –
@HovercraftFullOfEels好吧,很高兴知道! – 2012-12-09 14:53:26
您可以使用它来创建每个按钮
private JButton createButton(String title, ActionListener al) {
JButton button = new JButton(title);
button.addActionListener(al);
return button;
}
而这个处理动作
它是有许多按钮做* *确切同样的事情非常不寻常的GUI。什么是用例? –