2013-10-01 8 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); 
    } 
} 

2つのコードbetwwen違いは何ですが?働いていないメソッドを使用して、モダリティの種類を設定していますかこの方法を使ってこれを解決する方法はありますか?

+1

良い質問は、Java 7/Win 7(2番目のケースではタスクバーボタンなし)と同じですが、JDKのバグのようです。 – lbalazscs

答えて

6

特定のコンストラクタJDialogは、歴史的な理由から、所有者がnullの場合、ダミーフレームの所有者を作成するという問題があります。しかし、Dialogは、オーナーがトップレベルのウィンドウのように見えるようにしてはいけません()。私。

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

となります。

+0

ヤ。ありがとう@Holger – Nikhil

関連する問題