gpt4 book ai didi

java - 初始化时关闭 JFace 窗口

转载 作者:行者123 更新时间:2023-11-29 09:20:34 27 4
gpt4 key购买 nike

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

加载文件内容可能会失败。我可以检测到这种情况,我很乐意在它显示在屏幕上之前关闭子窗口。

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

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)

用初始值初始化窗口小部件的正确位置在哪里?理想情况下,我觉得它应该满足条件:

  • 小部件应该已经由框架创建。
  • 窗口应该还不可见。
  • close() 应在需要时正确关闭窗口。

最佳答案

如果 Window 对象还没有窗口外壳,open() 方法会创建一个新的窗口外壳并打开它。当调用 createContents(Composite parent) 时,它在其 create() 方法中,以及配置一些视觉细节的其他方法。那就是 initializeBounds() 方法,它依赖于一个已经存在的 shell。如果关闭它,就可以了,就会出现异常。

也许您想要覆盖 open() 方法本身:

public int open() {
if (!condition)
return super.open(); // as usual
else
return CANCEL;
}

关于java - 初始化时关闭 JFace 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com