4

我正在 Eclipse 中编写一个包含组合框的 RCP 应用程序,并且在选择它的任何项目时,将触发一个选择事件并且一些随机代码开始起作用。侦听器看起来像这样:

randomComboBox.addSelectionListener(new SelectionListener(){

    @Override
    public void widgetSelected(SelectionEvent e) {
        // random code
    }

    @Override
    public void widgetDefaultSelected(SelectionEvent e) {
        // TODO Auto-generated method stub
    }

});

我的问题是:是否可以从代码中触发事件?例如,如果我添加:

randomComboBox.select(0);

没有事件被触发。在这种情况下,我是否必须编写自己的监听器?

4

2 回答 2

4

select组合框的方法SWT.Modify在更改选择时发送类型的事件,因此您可以使用 aModifyListener而不是 a SelectionListener

实际上,ModifyListener监听组合框文本字段的变化,这意味着它对由选择引起的文本变化做出反应。这也意味着如果该文本被其他路径更改(例如组合文本字段中的用户条目),它将被触发。

牢记这种行为,aModifyListener可能是一种选择。

于 2012-09-22T00:24:31.623 回答
2

如果您的 ComboBox 是“只读” ,请不要使用ModifyListener

Combo comboBoxColor = new Combo(composite, SWT.BORDER | SWT.READ_ONLY);

您可以显式(以编程方式)触发任何事件,例如

control.notifyListeners(eventType , event);

在你的情况下:

comboBoxColor.notifyListeners(SWT.Selection, new Event())
  1. SWT.Selection -> 事件类型,您可以从 SWT 类中获取所有事件常量。

  2. 新事件()-> 事件对象

于 2019-10-23T15:08:38.707 回答