JDialog在任务栏中可见

时间:2014-12-30 01:08:44

标签: java swing jframe jdialog

我在main方法中生成了一个JFrame,其中包含一个按钮,每次按下它时都会打开JDialogs。我遇到的问题是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。创建了一个新窗口,但它们都不在任务栏中。

2 个答案:

答案 0 :(得分:2)

AFAIK这是Windows和MacOS上对话框的默认行为。

要在任务栏中显示另一个项目,您需要创建一个新的JFrame,这意味着,如果您依赖于对话框的模态状态,您将不再具有此功能。

说完这一切之后,您还应该通读The Use of Multiple JFrames, Good/Bad Practice?,并考虑使用JTabbedPaneCardLayout代替

答案 1 :(得分:0)

如果将null父项传递给JDialog构造函数,则会在任务栏中显示对话框。

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

(对话框)null - >强制转换为java.awt.Dialog

这是帖子的答案: Show JDialog on taskbar 我花了10秒才找到它;)