Swing + Models를 사용할 때 Combobox Deselect를 인식 하시겠습니까?
문제
나는 가능한 한 적절한 모델 방지 패턴을 사용하는 멋진 GUI를 스윙에 쓰려고 노력하고 있습니다. 변경할 때 새로운 데이터로 모델을 업데이트 해야하는 JcomBobox가 있습니다. 현재 선택된 항목을 얻으려면 다음을 사용하고 있습니다.
fooCombo.addItemListener(new ItemListener() {
public void itemStateChanged(final ItemEvent arg0) {
fooChangedHandler((Foo) fooModel.getSelectedItem());
}
});
데이터가 좋은 개체로 변경된 것을 반환합니다. 그러나 이전 값을 찾는 방법을 찾을 수 없으므로 어떤 객체를 변경 해야하는지 모르겠습니다. 여기에 아이디어가 있습니까?
해결책
결국 모델로 가지 않고 다음과 같은 getItem 방법에서 내 객체를 얻었습니다.
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());
}
}
다른 팁
Foo oldFoo;
....
fooCombo.addItemListener(new ItemListener() {
public void itemStateChanged(final ItemEvent arg0) {
Foo newFoo = (Foo) fooModel.getSelectedItem();
fooChangedHandler(oldFoo, newFoo);
oldFoo = newFoo;
}
});
기본 ComboboxModel 및 itemEvent를 사용하면 이전에 선택한 값을 얻을 수 없으므로이 기능으로 자신의 ComboBoxModel을 구현할 수 있습니다.
제휴하지 않습니다 StackOverflow