java - 如何访问 IContributionItem 的组合框

标签 java eclipse eclipse-plugin swt

我设法按照下面列出的代码在 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);

最佳答案

将组合变量放入 ControlContribution 类或 IContributionItem 接口(interface)中并创建 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接口(interface)需要有getCombo()方法

关于java - 如何访问 IContributionItem 的组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10337833/

相关文章:

java - 为什么在此代码中优先级较低的线程比优先级较高的线程获得更长的 CPU 时间

java - 为java应用程序生成 stub

java - Maven:将外部 jar 文件夹添加到类路径

java - Java GUI 编辑器为快速开发和可维护性提供了什么(即 Eclipse/SWT 和 Netbeans/Matisse)?

java - eclipse插件开发-右键单击首选项菜单?

java.lang.RuntimeException : Application "org.eclipse.ui.ide.workbench" could not be found in the registry 错误

java - 同步方法和 block 之间有什么区别?

java - 简单 Spring 应用程序中的依赖注入(inject)不起作用(将服务注入(inject) Controller 变量)

java - Android 应用程序无法播放 GSM 6.10 编码的 wav?

tomcat - Sysdeo Tomcat DevLoader - Java 类的热部署导致整个应用程序重新启动