문제

나는 가능한 한 적절한 모델 방지 패턴을 사용하는 멋진 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을 구현할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top