【问题标题】:How to fix Widget is disposed errer when tryng to open Shell for the second time?尝试第二次打开 Shell 时如何修复 Widget is disposed 错误?
【发布时间】:2020-04-07 09:29:35
【问题描述】:

当我第二次尝试打开子外壳时,发生 Widget is disposed 错误。 我正在尝试创建一个主外壳,然后使用菜单栏和子外壳来执行这些功能。

这里是 printStackTrace:

org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.checkWidget(Unknown Source)
at org.eclipse.swt.widgets.Shell.close(Unknown Source)
at it.anabasibdg.viste.Main$2.widgetSelected(Main.java:108)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at it.anabasibdg.viste.Main.open(Main.java:51)
at it.anabasibdg.viste.Main.main(Main.java:36)

代码如下:

MenuItem mntmInserimento = new MenuItem(menu_2, SWT.NONE);
    mntmInserimento.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {

            if(cs1.isDisposed() == false) {


            cs1.layout();
            cs1.open();




        }else {

            cs1.open();



        }
    }
        });

【问题讨论】:

    标签: java eclipse swt


    【解决方案1】:

    Shell 关闭后,Shell 及其包含的所有控件都将被释放,不能再次使用。

    每次您想使用它时,都必须从头开始创建一个新的 shell 及其所有内容。

    【讨论】:

      猜你喜欢
      • 2022-08-12
      • 2020-02-01
      • 2018-04-06
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多