【问题标题】:How to close a dialog in code?如何在代码中关闭对话框?
【发布时间】:2014-02-10 06:10:39
【问题描述】:

所以我正在制作一个 Eclipse 插件,并通过扩展对话框类制作了我自己的对话框。

我的对话框基本上使用来自服务器的数据填充树视图。有时无法填充数据(因为服务器已关闭),因此我的树视图为空。

如果我无法连接到服务器,我会显示另一个对话框来报告错误。 我的问题是,当我在错误对话框中按确定时,我想关闭初始对话框。

我还没有找到一个很好的方法来做到这一点。 我尝试将 setBlockOnOpen 设置为 false。 我试过打电话cancelPressed。 他们都没有工作。 我在 createDialogArea 函数中调用了它们。

关于如何让它发挥作用的任何想法?

【问题讨论】:

  • 您能发布一些您的自定义对话框代码吗?
  • 我没有最新的代码。但是这里是我修改的一些代码,应该很容易明白我的意思。 pastebin.com/gPKca2M7 如您所见,如果出现无法连接服务器的异常,则返回 null。三个注释行是我尝试过的三种不同的解决方案,但它们不起作用。
  • 你有没有试过用这个方法dismiss() ...

标签: plugins eclipse-plugin swt


【解决方案1】:

基本上是用户取消对话框。你需要调用cancelPressed(),所以如果你有任何依赖于returnCode的代码,它将是一致的处理

if(noDataLoaded){
    Display.getDefault().asyncExec(new Runnable() {

     public void run() {
        cancelPressed():
    }
    });
}

【讨论】:

    【解决方案2】:

    您需要在对话框创建完成后调用close。您可以使用以下代码来做到这一点:

    parent.getDisplay().asyncExec(new Runnable()
      {
        @Override
        public void run()
        {
          close();
        }
      });
    

    在您的 createDialogArea 方法中。但是,对话框可能会短暂出现。最好在创建对话框之前进行检查。

    【讨论】:

    • 感谢工作。 (虽然我确实使用了 cancelpressed() 因为它会更好)
    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2019-08-13
    • 2011-04-04
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    相关资源
    最近更新 更多