2014-12-30 1 views
0

У меня есть JFrame, сгенерированный в моем основном методе, который содержит кнопку, которая открывает JDialogs каждый раз при нажатии. Проблема, с которой я сталкиваюсь, заключается в том, что JDialog не отображается на панели задач, и решения, которые я нахожу в Интернете, - это когда вы создаете JDialog в своей основной папке.JDialog, видимый на панели задач

Как сделать все новое окно на панели задач Windows?

Для справки, мой основной выглядит следующим образом:

public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       Main frame = new Main(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

/** 
* Create the frame. 
*/ 
public Main() { 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 450, 300); 
    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    contentPane.setLayout(new BorderLayout(0, 0)); 
    setContentPane(contentPane); 



    JButton btnNouvelleFentre = new JButton("Nouvelle fen\u00EAtre"); 
    btnNouvelleFentre.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      Chat dlg = new Chat(); 
     } 
    }); 
    contentPane.add(btnNouvelleFentre, BorderLayout.SOUTH); 
} 

Как вы можете видеть, я создаю экземпляр класса Chat, который простирается JDialog. Создается новое окно, но ни одна из них не находится на панели задач.

+0

AFAIK Это поведение по умолчанию в Windows и MacOS. – MadProgrammer

ответ

2

AFAIK Это поведение по умолчанию для диалогов в Windows и MacOS.

Чтобы отобразить еще один элемент на панели задач, вам нужно будет создать новый JFrame, это будет означать, что если вы полагаетесь на модальное состояние диалога, у вас больше не будет этой функции.

Сказав все это, вы должны также иметь чтения через The Use of Multiple JFrames, Good/Bad Practice? и рассмотреть возможность использования JTabbedPane или CardLayout вместо

+0

Вопрос в том, что на панели задач отображается jdialog, это было бы очень полезно для того, что я хочу сделать. – zuokuok

+0

Вы не можете контролировать это. Это проблема с ОС – MadProgrammer

0

Оказывается, если вы передаете пустой родитель конструктору JDialog, ваш диалог будет отображаться на панели задач.

JDialog dialog = new JDialog((Dialog)null); 
// so if you say Chat extends JDialog, that would be: 
Chat dlg = new Chat((Dialog)null); 

(Dialog) нуль -> приведение к java.awt.Dialog

Это ответ от должности: Show JDialog on taskbar Это только у меня ушло 10 секунд Ф.О. найти;)

+0

Также ознакомьтесь с другим решением, представленным в этом сообщении. – ProgrammingIsAwsome

+0

Это не работает, если у вас уже есть JFrame. Я нашел это раньше и пробовал, вот почему я спрашиваю. – zuokuok

+0

Хорошо. Я пробовал это с этим кодом, и это сработало. – ProgrammingIsAwsome

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

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