我学习了如何根据此tutorial编写基于SWT的应用程序。但是,我不知道如何前进到GUI eclipse插件。

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

现在我的问题是:


我可以编写一个基于SWT的独立GUI应用程序,但是我不知道如何将以下代码片段放入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,Display的,但是看起来您应该在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依赖项中,我的操作甚至不会显示在弹出菜单中。

最佳答案

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

尝试将以下代码放入您的操作中:

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

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

07-28 01:24
查看更多