2012-06-25 29 views
4

我正在創建一個小程序。該小程序必須從數據庫中獲取一些大塊數據,並且操作很慢......這就是爲什麼我想要創建一個「加載」JDialog,它將顯示在小程序頂部,而小程序正在從數據庫,但它不應該阻止用戶輸入到小程序。
如何做到這一點?如果我創建一個「setAlwaysOnTop(true)」的JDialog,它將不會顯示在頂部。如果我將它設置爲模態,它會顯示,但它不會允許我的小程序與數據庫進行通信。我甚至試圖讓「加載」窗口運行並從另一個線程運行,沒有運氣。如何使JDialog最頂級但不是模態?

如何爲applet創建正確的,通用的「加載」JDialog,它不會是模態的,但會始終保持最佳狀態?

回答

2

從非EDT線程調用swing/awt 通常是一個非常糟糕的主意(我的意思是非常非常糟糕的主意)。敬請期待,JFrame/JDialog小應用程序在OSX和Windows中的工作方式有許多問題。如果你的applet直接使用JProgressBarr或者什麼在你的applets UI中,那麼IMO會爲用戶提供更好的體驗。如果您絕對必須彈出窗口,請使用AlwaysOnTop=true的JFrame。你越來越奇怪的行爲的原因是你可能不使用帶父組件的構造函數,或者只是傳入一個null值。

+0

這是真的,我沒有通過父「超」,但它似乎我不能導致JDialog沒有一個構造函數,需要Applet作爲父... – guest86

+0

真的,但你可以使用這樣的東西'新的JDialog(SwingUtilities.windowForComponent(yourJapplet))'。我不明白爲什麼你必須使用JDialog,它不像你需要的形式或任何東西。 –

+0

我需要使用它,因爲我正在重構現有和非常複雜的applet(它就像一個管理投注數據庫的獨立應用程序),所以我不能完全改變它,它必須保持爲applet :) – guest86