2013-01-21 6 views
5

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

+2

möglich Duplikat [? Java - Behandeln Sie mehrere Ereignisse mit einer Funktion] (http://stackoverflow.com/questions/501533/java-handle-multiple- Events-with-one-function) –

Antwort

8

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; 
    } 
} 
} 
+0

Ich denke, das ist im Allgemeinen eleganter. Vielen Dank! – CodyBugstein

+0

Nur eine Sekunde, erfordert dies, dass der ActionListener in derselben Klasse ist? – CodyBugstein

+1

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

6

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) { 

    } 
}