由于它是SWTException,我使用了syncExec方法,但即使我无法从我的代码中解决SWTException问题。请建议。
public class SampleSwtAction implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window;
public SampleSwtAction() {
}
public void run(IAction action) {
MessageDialog.openInformation(
window.getShell(),
"SampleSwt",
"Hello,Run swt application");
window.getShell().getDisplay().syncExec(
new Runnable() {
public void run(){
Display firstDisplay = new Display();
Shell firstShell = new Shell(firstDisplay);
firstShell.setText("Sample SWT application");
firstShell.setSize(200,100);
firstShell.open ();
while (!firstShell.isDisposed()) {
if (!firstDisplay.readAndDispatch())
firstDisplay.sleep ();
}
firstDisplay.dispose ();
}
});
}
public void selectionChanged(IAction action, ISelection selection) {
}
public void dispose() {
}
public void init(IWorkbenchWindow window) {
this.window = window;
}
}
答案 0 :(得分:0)
只是一个猜测,但您在Display
中定义了一个新的firstDisplay
'Runnable
'。
不应该'你还为你在该显示器上进行的所有操作(更新UI)添加了syncExec(Runable)
吗?
实际上,OP Abhishek Choudhary报告他不需要额外的显示“firstDisplay
”,并在单syncExec(Runable)
内执行他需要做的所有事情,默认{{1} }}