Ho due JButtons
chiamati "Left" e "Right". Il pulsante "Sinistra" sposta un oggetto rettangolo verso sinistra e il pulsante "Destra" lo sposta verso destra. Ho uno ActionListener
nella classe che funge da ascoltatore quando si fa clic su uno dei due pulsanti. Tuttavia, desidero che vengano eseguite azioni diverse quando si fa clic su ciascuna di esse. Come faccio a distinguere, nello ActionListener
, tra il quale è stato fatto clic?Un listener di azioni, due JButtons
risposta
Set actionCommand a ciascuno del pulsante.
// Imposta i comandi di azione su entrambi i pulsanti.
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;
}
}
UPDATE:
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;
}
}
}
Penso che questo sia più elegante in generale. Grazie! – CodyBugstein
Solo un secondo, richiede che ActionListener si trovi nella stessa classe? – CodyBugstein
Definire una classe ActionListener. Dichiarare un oggetto della classe action nella classe UI. Imposta ogni pulsante actionListener usando il metodo addActionListener e aggiungi questo riferimento alla classe action come param e infine imposta il comando action a ciascuno di essi. – Amarnath
Abbastanza facile con il metodo getSource()
disposizione ActionEvent
:
JButton leftButton, rightButton;
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if (src == leftButton) {
}
else if (src == rightButton) {
}
}
possibile duplicato di [? Java - gestire più eventi con una funzione] (http://stackoverflow.com/questions/501533/java-handle-multiple- events-with-one-function) –