我想为一组按钮添加ActionListener。是否有一个类可以包装这些按钮?类似于GroupJButtons或更普遍的对象组?这样我就可以为它们设置一个ActionListener。最后,我并不关心哪个按钮被按下,我只想改变他的文本,所以我只需将其强制转换为JButton并更改文本即可。
整个过程可以减少1到2行代码(如果使用循环),但我想这样做因为从逻辑上讲更好。
整个过程可以减少1到2行代码(如果使用循环),但我想这样做因为从逻辑上讲更好。
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");
}