java - 设置 JFrame 而不与任务栏重叠

标签 java swing jframe

我需要一个未修饰的 JFrame(setUndecorated(true)),它需要全屏显示,不与任务栏重叠。

我已经尝试了以下解决方案。

  • 调用 setExtendedState(MAXIMIZED_BOTH)。

    • 优势: 这按预期工作正常,即窗口正在动态调整自身,但存在以下问题。
    • 问题 最初窗口占据全屏 虽然框架会自行动态调整,但它会与任务栏重叠。
  • 按照 Does JFrame.setExtendedState(MAXIMIZED_BOTH) work with undecorated frames? 中所述尝试了以下解决方案

     GraphicsConfiguration config = aFrame.getGraphicsConfiguration();
     Rectangle usableBounds = SunGraphicsEnvironment.getUsableBounds(config.getDevice());
     aFrame.setBounds(0, 0, usableBounds.width, usableBounds.height);
    
    • 优势: 我没有重叠,窗口看起来很好。
    • 问题: 当任务栏位置/大小更改时,窗口不会动态调整自身。

如有任何帮助,我们将不胜感激。

我想到了一个设计。但不确定其可行性。我可以使用 setBounds()。但是当任务栏被调整或重新定位时,我需要通知我的框架。有办法吗?

最佳答案

能够用下面的代码解决上面的问题,

Rectangle usableBounds = SunGraphicsEnvironment.getUsableBounds(config.getDevice());
setMaximizedBounds(usableBounds);
setExtendedState(MAXIMIZED_BOTH);

因此,通过 getUsableBounds,我能够获得离开任务栏的边界。因此,我正在使用 setExtendedState(MAXIMIZED_BOTH) 当我重新调整任务栏的大小/重新定位时,窗口会自动更新。 :-)

关于java - 设置 JFrame 而不与任务栏重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19632093/

相关文章:

java - 使用逗号格式化 JTable 列单元格中的整数

java - JFrame、JPanel 和 awt 问题

java - 为什么我的简单 JFrame 显示很奇怪?

c# - 如何将java嵌入到C#中

java - 为什么我的 java.util.zip 函数显示不一致的行为?

java - 从 Java GUI 获取输入时出现问题

java - JList 复制选择

java - 如何仅关闭 JDialog 并使 JFrame 仍然可用

java - 当表数据更改时,JTable 多选会失去选择

java - 如何从 Post 请求 url 和浏览器转储中隐藏密码