【发布时间】:2013-01-04 18:43:49
【问题描述】:
我有两个JButtons,分别称为“左”和“右”。
“左”按钮将矩形对象向左移动,“右”按钮将其向右移动。
我在类中有一个ActionListener,它充当单击任一按钮时的侦听器。
但是,我希望在单击每个操作时发生不同的操作。如何区分ActionListener中的哪个被点击了?
【问题讨论】:
标签: java swing awt jbutton actionlistener
我有两个JButtons,分别称为“左”和“右”。
“左”按钮将矩形对象向左移动,“右”按钮将其向右移动。
我在类中有一个ActionListener,它充当单击任一按钮时的侦听器。
但是,我希望在单击每个操作时发生不同的操作。如何区分ActionListener中的哪个被点击了?
【问题讨论】:
标签: java swing awt jbutton actionlistener
为每个按钮设置actionCommand。
// 为两个按钮设置动作命令。
btnOne.setActionCommand("1");
btnTwo.setActionCommand("2");
public void actionPerformed(ActionEvent e) {
int action = Integer.parseInt(e.getActionCommand());
switch(action) {
case 1:
//doSomething
break;
case 2:
// doSomething;
break;
}
}
更新:
public class JBtnExample {
public static void main(String[] args) {
JButton btnOne = new JButton();
JButton btnTwo = new JButton();
ActionClass actionEvent = new ActionClass();
btnOne.addActionListener(actionEvent);
btnTwo.addActionListener(actionEvent);
btnOne.setActionCommand("1");
btnTwo.setActionCommand("2");
}
}
class ActionClass implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
int action = Integer.parseInt(e.getActionCommand());
switch (action) {
case 1:
// DOSomething
break;
case 2:
// DOSomething
break;
default:
break;
}
}
}
【讨论】:
使用ActionEvent 可用的getSource() 方法非常简单:
JButton leftButton, rightButton;
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if (src == leftButton) {
}
else if (src == rightButton) {
}
}
【讨论】: