来自代码的火选择事件

时间:2012-09-21 22:49:19

标签: java eclipse events selection rcp

我正在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);

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

2 个答案:

答案 0 :(得分:4)

组合框的select方法在更改选择时会发送SWT.Modify类型的事件,因此您可以使用ModifyListener代替SelectionListener

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

记住这种行为,ModifyListener可能是一种选择。

答案 1 :(得分:0)

如果您的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. 新Event()->事件对象