【问题标题】:How to show dialog on top of the frame, even if setAlwaysOnTop() is set in Java?即使在 Java 中设置了 setAlwaysOnTop(),如何在框架顶部显示对话框?
【发布时间】:2024-01-21 14:59:01
【问题描述】:

如果框架设置了 setAlwaysOnTop() 并且某个对话框正在运行,则对话框将显示在框架下方。我想在框架顶部显示它。换句话说,即使设置了 setAlwaysOnTop(),对话框仍应位于框架顶部。

有人可以帮我吗?

编辑:

示例代码:

public MainFrame() {
        super("Potatator");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setAlwaysOnTop(true);

        JOptionPane.showMessageDialog(this, "I want to set this dialog on top of frame");
        repaint();
    }

【问题讨论】:

  • 使用另一个布局怎么样?例如GridBagLayout 等?
  • 对话框是否有框架作为父级?如果没有测试,我会假设模态对话总是在他们的父母之上..
  • 为了获得更好的帮助,请尽快发布 SSCCE/MCVE,简短、可运行、可编译,然后在这里阅读有关如何在对话框中使用模态作为使用其他 Swing 功能的一部分的 Oracle 教程
  • @Zorlan 布局和 setAlwaysOnTop() 方法之间有什么联系?
  • @Duncan 是的,对话框有框架作为父母,就像我添加到我的帖子中一样。我虽然喜欢你,但它不起作用。

标签: java swing dialog frame


【解决方案1】:

此问题的快速解决方案是在显示对话框时将 setAlwaysOnTop 临时设置为 false,然后在对话框关闭时将其设置为 true。

setAlwaysOnTop(false);
JOptionPane.showMessageDialog(this, "I want to set this dialog on top of frame");
setAlwaysOnTop(true);

【讨论】:

    最近更新 更多