我设法按照下面列出的代码在IToolBarManager上添加一个组合框。现在有没有人知道如何从该范围的oustide访问IContributionItem内部创建的组合框?
亲切的问候, KYRIAKOS
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);
答案 0 :(得分:4)
将combo变量放在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()方法