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 に答える