Ich habe zwei JButtons
namens "Left" und "Right". Die Schaltfläche "Links" verschiebt ein Rechteckobjekt nach links und die Schaltfläche "Rechts" verschiebt es nach rechts. Ich habe eine ActionListener
in der Klasse, die als Listener fungiert, wenn eine der beiden Schaltflächen geklickt wird. Allerdings möchte ich verschiedene Aktionen passieren, wenn jeder geklickt wird. Wie kann ich in der ActionListener
unterscheiden, zwischen denen geklickt wurde?Ein Aktion Listener, zwei JButtons
Antwort
Set actionCommand zu jedem der Taste.
// Legen Sie die Aktionsbefehle für beide Schaltflächen fest.
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;
}
}
}
Ich denke, das ist im Allgemeinen eleganter. Vielen Dank! – CodyBugstein
Nur eine Sekunde, erfordert dies, dass der ActionListener in derselben Klasse ist? – CodyBugstein
Definieren Sie eine ActionListener-Klasse. Deklarieren Sie ein Objekt der Action-Klasse in der UI-Klasse. Legen Sie für jede Schaltfläche actionListener die Methode addActionListener fest und fügen Sie diese Aktionsklassenreferenz als Parameter hinzu, und legen Sie schließlich den Aktionskommando für jede Komponente fest. – Amarnath
Ganz einfach mit der getSource()
Methode zur Verfügung zu ActionEvent
:
JButton leftButton, rightButton;
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if (src == leftButton) {
}
else if (src == rightButton) {
}
}
möglich Duplikat [? Java - Behandeln Sie mehrere Ereignisse mit einer Funktion] (http://stackoverflow.com/questions/501533/java-handle-multiple- Events-with-one-function) –