【问题标题】:How to close a Java SWT window with a button?如何使用按钮关闭 Java SWT 窗口?
【发布时间】:2014-08-06 15:24:22
【问题描述】:

作为一名 Java 新手,以及多年的 iOS 和 .NET 经验,我发现这非常令人困惑。我想要的我认为非常简单 - 我想要一个带有 OK 和 Cancel 按钮的对话框(从主窗口调用)。当您单击确定时,它会执行一些操作,然后关闭对话框。当您单击取消时,它只是关闭对话框。

但是,使用 SWT shell Dialog 类执行此操作并不明显。如何获得一个按钮来关闭对话框并将执行返回到主窗口?

【问题讨论】:

    标签: java dialog swt


    【解决方案1】:

    使用Shell.close() 而不是dispose() - 所以shlCheckOut.close()

    Shell.close 发送SWT.Close 事件,然后调用dispose

    【讨论】:

      【解决方案2】:

      经过反复试验和大量无果的搜索,我在您的按钮代码中发现,您必须调用对话框的 shell 变量的 .dispose() 方法。例如,我的对话框是CheckOutDialog,因此我将shell 变量命名为shlCheckOut。在createContents()方法中,我把按钮代码写成这样:

      ...

      Button btnCancel = new Button(shlCheckOut, SWT.NONE);
      btnCancel.addSelectionListener(new SelectionAdapter() {
          @Override
              public void widgetSelected(SelectionEvent e) {
                  shlCheckOut.dispose();
              }
          }
      }
      

      【讨论】:

      • Shell.close() 更合适
      • 格雷格,谢谢 - 它应该作为答案发布。所以在我的例子中, shlCheckOut.close(); ?
      • 这对我来说看起来非常简单。你曾尝试过哪些方法?
      • 由于我是 Java 新手,很多对于经验丰富的人来说可能很简单的事情对我来说并不适用。 Dispose 不是我想的那样。我尝试了代码辅助来浏览这些方法,但效果并不明显——最佳实践也不是。
      • 嗯,调用 close() 时出现异常,但调用 dispose() 时却没有。 Exception in thread "main" org.eclipse.swt.SWTException: Widget is disposed
      猜你喜欢
      • 1970-01-01
      • 2018-05-02
      • 2022-01-22
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2014-07-16
      • 1970-01-01
      相关资源
      最近更新 更多