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

В чем разница betwwen двух кодов? Есть ли способ решить это с помощью метода?

+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

Ya .. Благодаря @Holger – Nikhil

 Смежные вопросы

  • Нет связанных вопросов^_^