Я предполагаю, что вы используете официальный учебник .
Однако вы не должны касаться ListModel и ComboBoxModel. Это более продвинутые функции, которые вам, вероятно, не нужны.
4 примера в этом руководстве НЕ используют ListModel и ComboBoxModel.
Если вы используете стандартный JComboBox (без ListModel или ComboBoxModel), происходит следующее: когда кто-то делает выбор, запускается ActionEvent
. Это событие магически запускается Swing; вам не нужно беспокоиться о том, как он генерируется. Однако вы несете ответственность за то, чтобы некоторые (ноль, один или несколько) объектов могли получать и что-то делать с ActionEvent:
public class MyClass implements ActionListener {
JComboBox comboBox = ...;
...
// You must register explicitly every ActionListener that you
// want to receive ActionEvent's from comboBox.
// Here we register this instance of MyClass.
comboBox.addActionListener(this);
...
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() instanceof JComboBox) {
System.out.println("MyClass registered an ActionEvent from a JComboBox.");
System.out.println("Selected: " +
((JComboBox) e.getSource()).getSelectedItem());
}
}
}
Обратите внимание: если у вас нет других ActionEvent, запущенных различными компонентами Swing, вы
можете пропустить if (e.getSource() instanceof JComboBox)
, поскольку вы знаете, что ActionEvent всегда происходит из JComboBox.
В моем примере JComboBox находится внутри MyClass, но это не обязательно должно быть:
JComboBox comboBox = ...;
MyClass myClass = ...;
comboBox.addActionListener(myClass);
...
comboBox.addActionListener(someOtherActionListener);