步骤1、首先执行a类中main方法时,创建了一个a,这是a的第一个实例,并把它赋给了a类中的静态类变量shell。
步骤2、之后,窗体1(a类的第一个实例)中点击按钮弹出窗体b,隐藏窗体1(a类的第一个实例)
步骤3、再之后,关闭窗体b,这时在窗体b的shellClosed方法中执行a a=new a(b.display,SWT.CLOSE); 这行代码新生成了一个a的实例,这是a的第二个实例,与a的第一个实例(a类中的静态类变量shell)是两个不同的实例,然而在a类的createContents方法中button的widgetSelected方法中执行的是shell.setVisible(false);,即只隐藏a的第一个实例,而由窗体2关闭所生成的a的第二个实例是没有隐藏的。
所以,窗体2的关闭事件需要修改如下:
addShellListener(new ShellAdapter() {
public void shellClosed(final ShellEvent e) {
a.shell.setVisible(true);
}
});
如果a类和b类不在同一个包中,可以将a类的静态类变量shell声明为public。