"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
cevap
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
Bence bu genel olarak daha zarif. Teşekkürler! – CodyBugstein
Sadece bir saniye, bu, ActionListener'ın aynı sınıfta olmasını gerektirir mi? – CodyBugstein
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
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) {
}
}
olası yinelenen [? Java - Bir fonksiyonu ile birden fazla etkinlik Kulp] (http://stackoverflow.com/questions/501533/java-handle-multiple- olaylar-bir-fonksiyonu ile) –