2010-04-13 65 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的父系血統。