rcp ComboViewer valueChanged

时间:2010-11-27 08:22:58

标签: java eclipse-rcp

如果更改了组合框中的值,如何在comboviewer中触发事件?并非每个选择都被触发(addSelectionChangedListener)。我只是想触发一个事件,只有当前选择了不同的值,不一样。

例如: 组合框,值{1,2,3}。我设置为1.当我打开组合框,然后单击1时,它不会触发事件。但是当我点击2或3时,它将触发事件。在html中,只触发事件,只有事件发生了变化。我已经使用comboViewer.getCombo()。addMofidyListener进行了测试。但情况与上面的selectionChangedListener相同(在组合框中单击的相同值将始终触发事件)。

由于

1 个答案:

答案 0 :(得分:2)

ComboViewer本身无法做到这一点。尝试编写一个记住旧值的选择监听器。

abstract class CleverSelectionChangedListener implements ISelectionChangedListener {

    private Object _oldSelection;

    public void selectionChanged(SelectionChangedEvent event) {
        Object newSelection = ((IStructuredSelection) event.getSelection()).getFirstElement();
        if (newSelection != _oldSelection) {
            selectionReallyChanged(event);
            _oldSelection = newSelection;
        }
    }
    public abstract void selectionReallyChanged(SelectionChangedEvent event);
}