rcp ComboViewer valueChanged

发布于 2024-10-04 11:50:42 字数 331 浏览 0 评论 0原文

如果组合框中的值发生更改,如何在组合查看器中触发事件?并非每个选择都会触发(addSelectionChangedListener)。我只想触发一个事件,仅当当前选择不同的值时才触发,而不是相同的值。

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

谢谢

How to trigger an event in comboviewer if value in combobox is changed? not every selection, triggered (addSelectionChangedListener). I just want to trigger an event, ONLY IF currently different value selected, not same.

For example:
combobox, value {1,2,3}. I set to 1. When I open combobox, and click 1, it WILL NOT triggered the event. But when I click 2 or 3, it will triggered the event. Something like in html, that only trigger the event, only the event changed. I have tested with comboViewer.getCombo().addMofidyListener. but the case is same with selectionChangedListener above (same value clicked in combobox will always trigger the event).

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

太阳哥哥 2024-10-11 11:50:42

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

ComboViewer can't do this by itself. Try writing a selection listener that remembers the old value.

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);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文