2013-01-21 9 views
5

"Sol" ve "Sağ" adlı iki JButtons sahibim. "Sol" düğmesi bir dikdörtgen nesneyi sola taşır ve "Sağ" düğmesi sağa doğru hareket ettirir. Her iki düğmenin tıklandığında dinleyici görevi gören sınıfta bir ActionListener var. Ancak, her tıklandığında farklı eylemler olmasını istiyorum. ActionListener arasında, tıklanan arasında nasıl ayırt edebilirim?Bir eylem dinleyicisi, iki JButtons

+2

olası yinelenen [? Java - Bir fonksiyonu ile birden fazla etkinlik Kulp] (http://stackoverflow.com/questions/501533/java-handle-multiple- olaylar-bir-fonksiyonu ile) –

cevap

8

Seti actionCommand.

// Eylem komutlarını her iki düğmeye de ayarlayın.

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

GÜNCELLEME:

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

Bence bu genel olarak daha zarif. Teşekkürler! – CodyBugstein

+0

Sadece bir saniye, bu, ActionListener'ın aynı sınıfta olmasını gerektirir mi? – CodyBugstein

+1

Bir ActionListener sınıfı tanımlayın. UI sınıfındaki eylem sınıfının bir nesnesini bildirin. AddActionListener yöntemini kullanarak her bir button actionListener öğesini ayarlayın ve bu action class başvurusunu param olarak ekleyin ve son olarak her birine action komutu ayarlayın. – Amarnath

6

ActionEvent mevcut getSource() yöntemle Oldukça kolay: düğmenin her birine

JButton leftButton, rightButton; 

public void actionPerformed(ActionEvent e) { 
    Object src = e.getSource(); 

    if (src == leftButton) { 

    } 
    else if (src == rightButton) { 

    } 
}