在 Windows 任务栏上显示 JDialog

2022-09-01 11:11:10

我正在尝试在 Windows 中显示 。如何在我的 Windows 任务栏上显示(类似 )?JDialogJDialogJFrame


答案 1

对话框本身不能具有任务栏条目,但可以构造一个没有任何可见效果的框架,并将其用作对话框的父级。然后,对话框将看起来像有一个任务栏条目。下面的代码演示如何执行此操作:

class MyDialog extends JDialog {

    private static final List<Image> ICONS = Arrays.asList(
            new ImageIcon("icon_16.png").getImage(), 
            new ImageIcon("icon_32.png").getImage(),
            new ImageIcon("icon_64.png").getImage());

    MyDialog() {
        super(new DummyFrame("Name on task bar", ICONS));
    }

    public void setVisible(boolean visible) {
        super.setVisible(visible);
        if (!visible) {
            ((DummyFrame)getParent()).dispose();
        }
    }
}

class DummyFrame extends JFrame {
    DummyFrame(String title, List<? extends Image> iconImages) {
        super(title);
        setUndecorated(true);
        setVisible(true);
        setLocationRelativeTo(null);
        setIconImages(iconImages);
    }
}

答案 2

我找到了你问题的答案,因为我有相反的问题。我有一个JDialog显示在任务栏中,我花了很长时间才弄清楚如何防止它显示。事实证明,如果将父级传递给 JDialog 构造函数,则对话框将显示在任务栏中

JDialog dialog = new JDialog((Dialog)null);

强制转换为是为了避免构造函数不明确。java.awt.Dialog


推荐