【问题标题】:How to write a SWT based GUI in Eclipse plug-in?如何在 Eclipse 插件中编写基于 SWT 的 GUI?
【发布时间】:2013-05-03 03:53:21
【问题描述】:

我在这个tutorial 之后学习了如何编写基于 SWT 的应用程序。但是,我不知道如何继续使用 GUI eclipse 插件。

我正在编写的插件是右键单击包资源管理器中的任何 IJavaElement 节点,它将显示更多操作,该操作将弹出一个 GUI 对话框,让我填写一些值并将结果保存到我的数据库.

现在我的问题是:

  • 我可以写一个独立的基于SWT的GUI应用程序,但是我不知道如何将下面的代码sn-p放入public void run(IAction action)

    Display display = new Display();
    Shell shell = new Shell(display);
    
    shell.setLayout(new GridLayout());
    shell.open();
    
    while (!shell.isDisposed()) {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
    

    我发现的所有 SWT 教程都是在主目录中创建 Shell,显示,但看起来你应该在 Eclipse 插件中做不同的事情。开发Eclipse插件时必须使用JFace创建Dialog吗?

  • 如果不在 plugin.xml 依赖项中添加 org.eclipse.swt(.cocoa.macosx.x86_64.source),则只有右键单击 IJavaElement 才能显示该操作。但是当我尝试运行该操作时,eclipse会显示

    Problem Occurred
    Unhandled event loop exception
    Not implemented [multiple displays]
    

    我猜是因为我又新了一个Display。但是,如果我将 org.eclipse.swt(.cocoa.macosx.x86_64.source) 添加到 plugin.xml 依赖项中,我的操作甚至不会出现在弹出菜单中。

【问题讨论】:

    标签: java eclipse-plugin swt


    【解决方案1】:

    您的代码正在创建一个新的显示 - 在创建 Eclipse 插件时您不应该这样做。 Eclipse 已经运行了显示和事件循环。

    试着把这段代码放在你的行动中:

    Shell shell = new Shell(Display.getCurrent());
    
    shell.setLayout(new GridLayout());
    shell.open();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      相关资源
      最近更新 更多