Java 如何在Eclipse插件中编写基于SWT的GUI?

Java 如何在Eclipse插件中编写基于SWT的GUI?,java,eclipse-plugin,swt,Java,Eclipse Plugin,Swt,接下来,我学习了如何编写基于SWT的应用程序。但是,我不知道如何进一步开发GUI eclipse插件 我正在编写的插件是右键单击PackageExplorer中的任何IJavaElement节点,它将显示另一个操作,该操作将打开一个GUI对话框,让我填写一些值并将结果保存到数据库中 现在我的问题是: 我可以编写一个独立的基于SWT的GUI应用程序,但我不知道如何将以下代码片段放入public void run(IAction action) 我找到的所有SWT教程都是创建Shell,在main

接下来,我学习了如何编写基于SWT的应用程序。但是,我不知道如何进一步开发GUI eclipse插件

我正在编写的插件是右键单击PackageExplorer中的任何IJavaElement节点,它将显示另一个操作,该操作将打开一个GUI对话框,让我填写一些值并将结果保存到数据库中

现在我的问题是:

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

    我找到的所有SWT教程都是创建Shell,在main中显示,但在Eclipse插件中似乎应该做不同的事情。在开发Eclipse插件时,我必须使用JFace创建对话框吗

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

    Problem Occurred
    Unhandled event loop exception
    Not implemented [multiple displays]
    
    我想这是因为我又多了一个
    显示屏
    。但是,如果我将
    org.eclipse.swt(.cococoa.macosx.x86_64.source)
    添加到plugin.xml依赖项中,我的操作甚至不会显示在弹出菜单中


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

尝试在操作中仅使用以下代码:

Shell shell = new Shell(Display.getCurrent());

shell.setLayout(new GridLayout());
shell.open();

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

尝试在操作中仅使用以下代码:

Shell shell = new Shell(Display.getCurrent());

shell.setLayout(new GridLayout());
shell.open();