2

我设法按照下面列出的代码在 IToolBarManager 上添加了一个组合框。现在有没有人知道如何从该范围之外访问在 IContributionItem 内创建的组合框?

亲切的问候,基里亚科斯

IToolBarManager mgr = this.getViewSite().getActionBars().getToolBarManager();
IContributionItem comboCI = new ControlContribution("test") {
    protected Control createControl(Composite parent) {

        final Combo c = new Combo(parent, SWT.READ_ONLY);
        c.add("one");
        c.add("two");
        c.add("three");
        c.addSelectionListener(new SelectionAdapter() {
             public void widgetSelected(SelectionEvent e) {
                 c.add("four");
              }
              });
        return c;
    }
};        

mgr.add(comboCI);
4

1 回答 1

4

将组合变量放在 ControlContribution 类或 IContributionItem 接口中并创建一个 get 方法。

class ControlContribution implements IContributionItem {

    protected Combo combo;

    public Combo getCombo(){
        return combo;
    }
}

这样,您无需在匿名类中声明它。

IContributionItem comboCI = new ControlContribution("test") {
protected Control createControl(Composite parent) {

    combo = new Combo(parent, SWT.READ_ONLY);
    combo.add("one");
    combo.add("two");
    combo.add("three");
    combo.addSelectionListener(new SelectionAdapter() {
         public void widgetSelected(SelectionEvent e) {
             combo.add("four");
          }
          });
    return combo;
}
};  

你可以打电话

comboCI.getCombo();

显然,IContributionItem 接口需要有 getCombo() 方法

于 2012-04-26T17:44:21.013 回答