Zmiana Wyboru JComboBox?
Staram się, aby zdarzenie zostało odpalone, gdy tylko zostanie dokonany wybór z JComboBox
.
actionPerformed()
, ale nigdy nie odpala.
Brakuje mi pomysłów.
Jak otrzymać powiadomienie o zmianie wyboru na JComboBox
?
Edit: muszę przeprosić, okazało się, że używałem źle zachowującej się podklasy JComboBox
, ale zostawię pytaj, bo twoja odpowiedź jest dobra. Rozpocznij głosowanie. :)
6 answers
Powinno odpowiedzieć na ActionListeners , Tak:
combo.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
doSomething();
}
});
@John Calsbeek słusznie zwraca uwagę, że addItemListener()
również zadziała. Możesz jednak otrzymać 2 ItemEvents
, jeden za odznaczenie wcześniej wybranego elementu, a drugi za wybór nowego elementu. Po prostu nie używaj obu typów zdarzeń!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:05
Przykład kodu ItemListener
implementacji
class ItemChangeListener implements ItemListener{
@Override
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED) {
Object item = event.getItem();
// do something with object
}
}
}
Teraz otrzymamy tylko wybrany element.
Następnie po prostu dodaj listener do swojego JComboBox
addItemListener(new ItemChangeListener());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-20 12:28:37
Wypróbowałbym itemStateChanged()
metodę ItemListener
interfejs, jeśli rozwiązanie jodonnella się nie powiedzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-12 13:33:50
Tutaj powstaje ComboBox, który dodaje słuchacz do zmiany wyboru pozycji:
JComboBox comboBox = new JComboBox();
comboBox.setBounds(84, 45, 150, 20);
contentPane.add(comboBox);
JComboBox comboBox_1 = new JComboBox();
comboBox_1.setBounds(84, 97, 150, 20);
contentPane.add(comboBox_1);
comboBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
//Do Something
}
});
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-10 19:24:02
Możesz spróbować tych
int selectedIndex = myComboBox.getSelectedIndex();
-lub -
Object selectedObject = myComboBox.getSelectedItem();
-lub -
String selectedValue = myComboBox.getSelectedValue().toString();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-14 10:06:50
Ostatnio Szukałem tego samego rozwiązania i udało mi się znaleźć proste bez przypisywania konkretnych zmiennych dla ostatniego wybranego elementu i nowego wybranego elementu. I to pytanie, choć bardzo pomocne, nie dostarczyło mi rozwiązania, którego potrzebowałem. To rozwiązało mój problem, mam nadzieję, że rozwiąże twój i innych. Dzięki.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:30