首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >初始化时关闭JFace窗口

初始化时关闭JFace窗口
EN

Stack Overflow用户
提问于 2011-07-16 16:09:42
回答 1查看 554关注 0票数 2

我有一个包含文件列表的JFace应用程序。当用户单击列表中的文件时,会打开子窗口。子窗口自动将文件内容加载到文本小部件中。

文件内容的加载可能失败。我能察觉到这种情况,我很乐意在儿童窗口在屏幕上显示之前关闭它。

我试图在子窗口的overriden protected Control createContents(Composite parent)方法的末尾调用protected Control createContents(Composite parent)。但是我在JFace库的某个地方得到了一个空异常:

代码语言:javascript
复制
Exception occurred java.lang.NullPointerException
at org.eclipse.jface.window.Window.initializeBounds(Window.java:758)
at org.eclipse.jface.window.Window.create(Window.java:435)
at org.eclipse.jface.window.Window.open(Window.java:790)

用初始值初始化窗口小部件的正确位置在哪里?理想情况下,我认为它应该符合以下条件:

yet.

  • close()应该已经由框架创建了
  • 小部件。
  • 窗口不应该是可见的,如果需要的话,
  • 应该正确地关闭窗口。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-19 11:12:49

如果Window对象尚未获得窗口shell,则open()方法将创建一个新的窗口外壳并打开它。在它的create()方法中,调用了createContents(Composite parent),以及配置了一些可视细节的其他一些方法。这就是initializeBounds()方法,它依赖于一个已经存在的shell。如果你关闭它,你就会得到例外。

也许您希望覆盖open()方法本身:

代码语言:javascript
复制
public int open() {
   if (!condition)
        return super.open();    // as usual
    else
        return CANCEL;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6718608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档