Я не могу обвести голову вокруг этого. Я попытался придерживаться шаблона MVC в первый раз и теперь испытываю трудности с доступом к источнику ActionEvent, поскольку ActionListener находится в другом классе. Но пусть код говорит ...
В «представлении»:
// ControlForms.java
...
private JPanel createSearchPanel() throws SQLException {
...
comboBoxCode = new JComboBox(); // Field comboBoxCode -> JComboBox()
SwingUtilities.invokeLater(new Runnable() {
public void run() {
AutoCompleteSupport<Object> support = AutoCompleteSupport.install(
comboBoxCode, GlazedLists.eventListOf(jnlCodeArray));
}
}); // Auto-Complete comboBox from GlazedLists
...
public void setComboListener(ComboListener comboListener) {
comboBoxCode.addActionListener(comboListener);
}
...
}
Тогда, как я называю контроллер, у меня есть два разных класса:
// Controller.java
public MyController() throws SQLException {
...
addListeners();
}
...
private void addListeners(){
View view = getView();
getView().getControlForm().setComboListener(new ComboListener());
}
и
public class ComboListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("ComboBox listened to! e = " + e.toString());
}
}
Теперь, e
, очевидно, не дает имя переменной (что в данный момент мне бы хотелось), поэтому я не могу if
проверить e.getSource()
.
Мой вопрос таков: есть ли либо a) способ запроса (например, через if
) источника e или b) менее сложный способ получить имя переменной?
Большое, большое спасибо заранее за ваши идеи и советы!