我有一个包含文件列表的JFace应用程序。当用户单击列表中的文件时,会打开子窗口。子窗口自动将文件内容加载到文本小部件中。
文件内容的加载可能失败。我能察觉到这种情况,我很乐意在儿童窗口在屏幕上显示之前关闭它。
我试图在子窗口的overriden protected Control createContents(Composite parent)方法的末尾调用protected Control createContents(Composite parent)。但是我在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)用初始值初始化窗口小部件的正确位置在哪里?理想情况下,我认为它应该符合以下条件:
yet.
close()应该已经由框架创建了发布于 2011-07-19 11:12:49
如果Window对象尚未获得窗口shell,则open()方法将创建一个新的窗口外壳并打开它。在它的create()方法中,调用了createContents(Composite parent),以及配置了一些可视细节的其他一些方法。这就是initializeBounds()方法,它依赖于一个已经存在的shell。如果你关闭它,你就会得到例外。
也许您希望覆盖open()方法本身:
public int open() {
if (!condition)
return super.open(); // as usual
else
return CANCEL;
}https://stackoverflow.com/questions/6718608
复制相似问题