2010-03-11 54 views
0

以下情況:如何在切換頂層窗口時保持主機背後的對話框?

我有一個JFrame並致電JOptionPane.showInputDialog("test")。模態對話框將會顯示。

當我在Windows中切換到另一個打開的窗口(例如Firefox),然後返回到我的Java應用程序(通過單擊Windows任務欄中的選項卡或使用ALT + TAB),僅顯示對話框。

當切換到我的應用程序時,是否可以顯示對話框後面的主框架? 例如Eclipse在打開「首選項」對話框時表現出所需的方式。 Eclipse是SWT,但也許在Swing中也是可能的!

回答

2

我不知道用JOptionPane的靜態方法做到這一點的方法,因爲你無法訪問對話框本身。但是,你可以通過製作你自己的對話框並添加一個這樣的監聽器來達到同樣的效果:

final JDialog dialog = new JDialog(); 
    dialog.setTitle("Test Input"); 
    dialog.setModal(true); 


    dialog.addWindowFocusListener(new WindowFocusListener() { 

     @Override 
     public void windowLostFocus(WindowEvent arg0) { 

     } 

     @Override 
     public void windowGainedFocus(WindowEvent arg0) { 
      frame.toFront();   
     } 
    }); 
+0

正是我所期待的!謝謝 – 2010-03-12 06:59:52

+0

您可能應該使用'JOptionPane'對話框來確保消息的標準平臺外觀。確實,你不能通過'JOptionPane'的靜態方法獲得對話框,但是你可以實例化一個'JOptionPane'然後調用它的'createDialog'。 – 2010-09-15 16:07:38