Как исправить ошибку Widget при попытке открыть Shell во второй раз? - PullRequest
0 голосов
/ 07 апреля 2020

Когда я пытаюсь во второй раз открыть дочернюю оболочку, появляются виджеты с ошибками. Я пытаюсь создать основную оболочку и, с помощью строки меню, затем дочернюю оболочку для функций.

Здесь 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();



        }
    }
        });

1 Ответ

0 голосов
/ 07 апреля 2020

Как только оболочка закрыта, оболочка и все содержащиеся в ней элементы управления удаляются и больше не могут использоваться.

Вы должны создавать новую оболочку и все ее содержимое с нуля каждый раз, когда хотите ее использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...