【问题标题】:JDialog visible in taskbarJDialog 在任务栏中可见
【发布时间】:2014-12-30 01:08:44
【问题描述】:

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

【问题讨论】:

  • AFAIK 这是 Windows 和 MacOS 上的默认行为

标签: java swing jframe jdialog


【解决方案1】:

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

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

说了这么多,您还应该仔细阅读The Use of Multiple JFrames, Good/Bad Practice? 并考虑改用JTabbedPane 或CardLayout

【讨论】:

  • 问题实际上是关于在任务栏中显示一个 jdialog,它对我想做的事情非常有用。
  • 你无法控制它。这是操作系统的问题
【解决方案2】:

事实证明,如果您将 null 父级传递给 JDialog 构造函数,您的对话框将显示在任务栏中。

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

(Dialog)null --> 转换为 java.awt.Dialog

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

【讨论】:

  • 还可以查看这篇文章中提供的其他解决方案。
  • 如果你已经有一个 JFrame 作为你的主框架,它就不起作用了。我之前发现并尝试过,这就是我问的原因。
猜你喜欢
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 2013-10-07
  • 2013-12-07
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 2016-03-09
相关资源
最近更新 更多