2010-04-13 43 views
1

我有一个自定义的窗口类,它是向下扩展JDialog的几个级别。我们有我们创建的窗口,有时我们使用带有父参数的构造函数创建新窗口作为现有窗口的子窗口。如何确定JDialog是否有孩子?

我需要在我们的自定义类中放置一些代码,这些代码根据窗口是否有子节点来做不同的事情。我知道getParent()等,我可以看到我可以遍历窗口的组件,但对于我的生活,我似乎无法弄清楚如何确定我的当前窗口是否有任何子窗口。

有没有办法做到这一点?任何帮助一如既往,非常感谢。

回答

2

请参阅Window.getOwnedWindows()。

+0

是的,当你们两个回答的时候,我几乎正好碰到了这个问题。就是这样,但当孩子们被移走后,它似乎并没有清理完毕。猜猜这对我来说不太合适,但它是我的问题的答案,所以我会接受。 – Morinar 2010-04-13 22:38:31

+0

Morinar,Window没有为您提供一个界面来解除成员与其所有权的关联,因此我不确定您为什么期望这些数据需要清理。这里有两个“子”的概念:Window-as-Container具有子组件,它与拥有其他Windows的窗口不同。 – 2010-04-13 22:56:00

+0

我回顾一下:调用Window.dispose * does *更新其所有权关系,因此它正在自我清理。如果这不足以满足您的特殊需求,请详细说明。 – 2010-04-13 23:03:37

1

getOwnedWindows()吗?它属于java.awt.Window其中JDialog的父系血统。