2011-11-30 68 views
2

我是Swing的新手,希望有人能幫助我。從對話框啓動框架

我有一個模式JDialogd1包含JXHyperlink,當我點擊它,我應該推出一個JFramef然而,當我這樣做的框架f進入後面的對話框d1所以我想我必須設置對話框d1非此模式工作,它做到了!現在

d1.setModal(false) 

我的問題是我有另一種「模式」對話框d2,有一個按鈕,在那裏當我點擊它,它應該啓動對話框d1但由於某種原因d1去後面d2

我在做什麼錯?我不允許從模態對話框中啓動非模態對話框嗎?

回答

2

Modal對話框始終顯示在其父級上。因此,如果您從模態對話框運行任何窗口(JFrame,非模態JDialog),它將會落後。

解決方案是,如果你想讓對話框d(n)在對話框d(n-1)上,使它成爲模態並將d(n-1)設置爲它的父對象。

因此,在第一種情況下,您可以將您的JFrame改爲JDialog並使其成爲模式。每次啓動對話框的新實例時,都應將其後面的窗口設置爲其父窗口。並儘量避免同時打開大量模態對話框。這是非常煩人的。

+0

感謝亞歷克斯,我覺得我必須這樣做,但我試圖避免這樣的代碼更改,因爲該JFrame也從其他窗口小部件和框架啓動,這是一個大型應用程序的一部分。 – user955165

0

可能值得注意的是,當彈出窗口可見時,無法進行模態更改。您可以更改彈出窗口的可見性(setVisible(boolean)),然後更改其模態,但是如果可見,則任何模態更改都不起作用。