如果更改了组合框中的值,如何在comboviewer中触发事件?并非每个选择都被触发(addSelectionChangedListener)。我只是想触发一个事件,只有当前选择了不同的值,不一样。
例如: 组合框,值{1,2,3}。我设置为1.当我打开组合框,然后单击1时,它不会触发事件。但是当我点击2或3时,它将触发事件。在html中,只触发事件,只有事件发生了变化。我已经使用comboViewer.getCombo()。addMofidyListener进行了测试。但情况与上面的selectionChangedListener相同(在组合框中单击的相同值将始终触发事件)。
由于
答案 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);
}