2013-10-01 52 views
6

我使用下面的代碼在任務欄上顯示JDialog,並且完美地在JDK 1.6中工作。在任務欄中顯示JDialog不工作

public class test8 { 
    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      public void run() { 
       JDialog d = new JDialog((Frame)null,Dialog.ModalityType.TOOLKIT_MODAL); 
       d.setTitle("title"); 
       d.setSize(300,200); 
       d.setVisible(true); 
       System.exit(0); 
      } 
     }; 
     EventQueue.invokeLater(r); 
    } 
} 

,但是當我使用的方法設置模式類型它不工作

public class test8 { 
    public static void main(String[] args) { 
     Runnable r = new Runnable() { 
      public void run() { 
       JDialog d = new JDialog(); 
       d.setTitle("title"); 
       d.setSize(300,200); 
       d.setModalityType(Dialog.ModalityType.TOOLKIT_MODAL); 
       d.setVisible(true); 
       System.exit(0); 
      } 
     }; 
     EventQueue.invokeLater(r); 
    } 
} 

是什麼速滑運動員的肌肉兩個代碼的區別?有什麼方法可以用這個方法來解決這個問題嗎?

+1

好的問題,與Java 7/Win 7(第二種情況下沒有任務欄按鈕)一樣,似乎是JDK錯誤。 – lbalazscs

回答

6

問題在於,某些構造函數JDialog由於歷史原因,如果所有者爲null,則會創建一個虛擬框架所有者。但一個Dialog不得有一個所有者是可見的像一個頂級窗口。即

JDialog d=new JDialog((Window)null); 
d.setModalityType(ModalityType.TOOLKIT_MODAL); 
d.setVisible(true); 

將工作。

+0

亞..謝謝@霍爾 – Nikhil