reconhecer combobox desmarque quando usando modelos balanço +?
Pergunta
Eu estou tentando escrever uma GUI agradável no Swing que usa o padrão Modelo-Delegado adequada, tanto quanto possível. Eu tenho um JComboBox que, quando alterados, precisa atualizar o modelo com os novos dados. Para obter o item selecionado no momento, estou usando:
fooCombo.addItemListener(new ItemListener() {
public void itemStateChanged(final ItemEvent arg0) {
fooChangedHandler((Foo) fooModel.getSelectedItem());
}
});
que retorna o que os dados foram alterados como um objeto agradável. No entanto, eu não consigo encontrar uma maneira de descobrir o valor antigo, então eu não sei qual necessidades objeto a ser alterado. Todas as ideias aqui?
Solução
acabou não indo para o modelo em tudo, mas recebendo meu objeto do método getItem assim:
public void itemStateChanged(final ItemEvent event) {
if (event.getStateChange() == event.DESELECTED) {
deselectedFoo = (Foo) event.getItem();
}
else if (event.getStateChange() == event.SELECTED) {
FooChangedHandler(deselectedFoo,(Foo) event.getItem());
}
}
Outras dicas
Foo oldFoo;
....
fooCombo.addItemListener(new ItemListener() {
public void itemStateChanged(final ItemEvent arg0) {
Foo newFoo = (Foo) fooModel.getSelectedItem();
fooChangedHandler(oldFoo, newFoo);
oldFoo = newFoo;
}
});
Como o padrão ComboBoxModel e ItemEvent não permite obter o valor selecionado anteriormente você poderia implementar sua própria ComboBoxModel com esse recurso.