对话框 - 打开关闭的对话框而不创建新对话框

时间:2012-10-25 20:57:10

标签: java dialog swt

这是一个更简单的问题。

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?

时打开对话框

修改 添加一些错误消息

enter image description here

AplotBaseDialog中的第110行

Control contents = super.createContents(parent);

AplotDialogHandler中的第48行

dlg.open();

1 个答案:

答案 0 :(得分:1)

  

java.lang.IllegalArgumentException:参数无效

     

...

     

at org.eclipse.swt.widgets.Label.setImage(Label.java:337)

Label的JavaDoc告诉您以下内容:

  

IllegalArgumentException -

     

ERROR_INVALID_ARGUMENT - 如果图像已被处理

所以,看起来你已经处理了你想要设置的图像。


有两种解决方案:

  1. 等待处理图像,直到主应用程序关闭为止。
  2. 在对话框关闭时处理图像,但在重新打开时创建一个新图像。