Java rcp组合查看器值已更改

Java rcp组合查看器值已更改,java,eclipse-rcp,Java,Eclipse Rcp,如果combobox中的值发生更改,如何在comboviewer中触发事件?并非所有选择都已触发(addSelectionChangedListener)。我只想触发一个事件,只要当前选择的值不同,而不是相同 例如: 组合框,值{1,2,3}。我设置为1。当我打开组合框并单击1时,它不会触发事件。但当我单击2或3时,它将触发事件。类似于html,只触发事件,只更改事件。我已经用comboViewer.getCombo().addMofidyListener进行了测试。但上述selectionCh

如果combobox中的值发生更改,如何在comboviewer中触发事件?并非所有选择都已触发(addSelectionChangedListener)。我只想触发一个事件,只要当前选择的值不同,而不是相同

例如: 组合框,值{1,2,3}。我设置为1。当我打开组合框并单击1时,它不会触发事件。但当我单击2或3时,它将触发事件。类似于html,只触发事件,只更改事件。我已经用comboViewer.getCombo().addMofidyListener进行了测试。但上述selectionChangedListener的情况相同(在combobox中单击相同的值将始终触发事件)


谢谢

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);
}

modifyListener在您的案例中正常工作。我在linux下测试