比如 我创建一个窗体类
public class myfrm{
   private Display display = Display.getDefault();
   
   public void show(){
      Shell sShell = new Shell();
      sShell.setSize(new Point(309, 243)); 
      sShell.open();      while (!sShell.isDisposed()) {
         if (!display.readAndDispatch())
display.sleep();
}
      display.dispose();
   }   ......
}我想同时显示出两个一样的窗口 然后在main方法中myfrm frm1 = new myfrm();
myfrm frm2 = new myfrm();

frm1.show();
frm2.show();结果是只出现了一个窗口 当关掉这个窗口时 会出现错误!

解决方案 »

  1.   

    异常信息
    Exception in thread "main" org.eclipse.swt.SWTException: Widget is disposed
    at org.eclipse.swt.SWT.error(SWT.java:3283)
    at org.eclipse.swt.SWT.error(SWT.java:3206)
    at org.eclipse.swt.SWT.error(SWT.java:3177)
    at org.eclipse.swt.widgets.Display.error(Display.java:974)
    at org.eclipse.swt.widgets.Display.checkDevice(Display.java:633)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2897)
    at main.text_frm.show(text_frm.java:39)
    at main.main.main(main.java:14)
      

  2.   

    应该是你在关闭一窗口后也公共的shell也给释放了。
      

  3.   

    在你的show()方法中有display.dispose()
    所以当你关闭一个的时候
    display自然就被释放了!
      

  4.   

    楼上正解
    我好像记得有个shell(Shell shell)的构造方法,可以一试