Mam dwa JButtons
o nazwie "Lewy" i "Prawy". Przycisk "W lewo" przesuwa obiekt prostokątny w lewo, a przycisk "W prawo" przesuwa go w prawo. Mam jeden ActionListener
w klasie, która działa jak detektor, gdy kliknięto przycisk. Jednak chcę, aby różne akcje miały miejsce po ich kliknięciu. Jak mogę odróżnić, w kodzie ActionListener
, który został kliknięty?Jeden słuchacz działania, dwa JButtony
Odpowiedz
Set actionCommand do każdego przycisku.
// Ustawić polecenia akcji dla obu przycisków.
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;
}
}
}
Myślę, że ten jest ogólnie bardziej elegancki. Dzięki! – CodyBugstein
Po chwili jednak, czy to wymaga, aby ActionListener był w tej samej klasie? – CodyBugstein
Zdefiniuj jedną klasę ActionListener. Zadeklaruj obiekt klasy działania w klasie UI. Ustaw każdy przycisk actionListener za pomocą metody addActionListener i dodaj to odwołanie do klasy działania jako parametr i ostatecznie ustaw komendę działania dla każdego z nich. – Amarnath
Dość łatwo metodą getSource()
dostępną ActionEvent
:
JButton leftButton, rightButton;
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
if (src == leftButton) {
}
else if (src == rightButton) {
}
}
- 1. JSF f: ajax słuchacz vs działania CommandButton
- 2. Dwa wyrzutni działania
- 3. Android - dwa zdania, dwa style, jeden TextView
- 4. Zend: Dwa obiekty, jeden wiersz
- 5. Relacja EF jeden na dwa
- 6. Emacs: ten sam bufor, dwa okna, jeden zwężony, jeden nie
- 7. Przekształć [: jeden, 1,: dwa, 2] w {: jeden => 1,: dwa => 2} w Ruby
- 8. zmiana słuchacz Państwowa MediaPlayer
- 9. Słuchacz zmiany wartości JTable
- 10. Glide słuchacz nie działa
- 11. dwa pola listy, jeden wybór w javascript
- 12. Dwa przyciski radiowe mają jeden "identyfikator"?
- 13. Unity Rejestruj dwa interfejsy jako jeden Singleton
- 14. Jak połączyć dwa proci w jeden?
- 15. jeden plus plus dwa kompiluje niespodziewanie
- 16. Scal dwa fragmenty xml w jeden?
- 17. Three.js - łącz dwa kształty razem jako jeden?
- 18. Dwa projekty .NET, jeden ciąg połączenia DB?
- 19. Słuchacz nie obsługuje żadnych usług.
- 20. Jeden obiekt dwa klucze obce na tę samą tabelę
- 21. Jeden lub dwa klucze główne w tabeli wielu do wielu?
- 22. jak przekonwertować dwa bajty na jeden 16-bitowy numer?
- 23. Próbuję jednocześnie animować dwa UIView, tylko jeden przesuwa
- 24. Jak połączyć dwa wiersze w jeden wiersz w sql?
- 25. jeden document.createElement, dołącz go dwa razy, tylko pokazuje raz
- 26. Dlaczego check_box tworzą pomocnika wygenerować dwa pola wyboru, jeden ukryty?
- 27. Symfony2 Routing: Dwa opcjonalne parametry - przynajmniej jeden wymagany
- 28. Jak zmienić ten stosunek jeden do jednego na dwa?
- 29. Jak połączyć dwa wyniki zapytania w jeden wiersz?
- 30. Android: Czy można mieć dwa widoki powierzchni jeden na drugim?
możliwe duplikat [? Java - Handle wiele zdarzeń z jednej funkcji] (http://stackoverflow.com/questions/501533/java-handle-multiple- events-with-one-function) –