2013-10-01 13 views
6

Sto utilizzando il codice seguente per mostrare JDialog sulla barra delle applicazioni e funziona perfettamente in JDK 1.6.Visualizzazione di JDialog nella barra delle applicazioni non funziona

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); 
    } 
} 

ma quando sono l'impostazione del tipo di modalità utilizzando il metodo non funziona

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); 
    } 
} 

Qual è la differenza betwwen i due codici? C'è un modo per risolvere questo usando il metodo?

+1

Buona domanda, lo stesso con Java 7/Win 7 (nessun pulsante della barra delle applicazioni nel secondo caso), sembra essere un bug JDK. – lbalazscs

risposta

6

Il problema è che alcuni costruttori di JDialog creano un proprietario fittizio di frame se il proprietario è null per motivi storici. Ma un Dialognon deve avere un proprietario per essere visibile come una finestra di livello superiore. Cioè

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

funzionerà.

+0

Ya .. Grazie @Holger – Nikhil

Problemi correlati