这是一个更简单的问题。
private static AplotBaseDialog dlg;
public Object execute(final ExecutionEvent event) throws ExecutionException {
if (dlg == null){
try {
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell();
dlg = new AplotBaseDialog(shell, session);
}
catch {
}
dlg.open();
return null;
}
好的,上面的代码检查并查看dlg是否为null。如果为null,则创建一个新对话框。 然后它打开对话框。
这在dlg为null时有效。但是如果dlg不为null,我会在dlg.open()行出错。 该错误指向对话框类中的此代码
@Override
protected Control createContents(Composite parent) {
Control contents = super.createContents(parent); <==== Right Here
setTitle("Title");
setMessage("Message");
if (image != null) {
setTitleImage(image);
}
return contents;
}
所以我的问题是如何在dlg!= null?
时打开对话框修改 添加一些错误消息
AplotBaseDialog中的第110行
Control contents = super.createContents(parent);
AplotDialogHandler中的第48行
dlg.open();
答案 0 :(得分:1)
java.lang.IllegalArgumentException:参数无效
...
at org.eclipse.swt.widgets.Label.setImage(Label.java:337)
Label
的JavaDoc告诉您以下内容:
IllegalArgumentException -
ERROR_INVALID_ARGUMENT - 如果图像已被处理
所以,看起来你已经处理了你想要设置的图像。
有两种解决方案: