java - 自动隐藏任务栏和最大屏幕空间

标签 java swing

有详细记录如下代码

    final Rectangle bounds = device.getDefaultConfiguration().getBounds();
    final Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets(
        device.getDefaultConfiguration());

    bounds.x = screenInsets.left;
    bounds.y = screenInsets.top;
    bounds.width -= screenInsets.left + screenInsets.right;
    bounds.height -= screenInsets.top + screenInsets.bottom;

其中device是一些有效的GraphicsDevice,给出了一个设备允许的最大矩形。还有其他一些方法似乎都有缺点。对于 MS Windows 上的主显示器,如果任务栏不自动隐藏,则此方法有效。但是,如果任务栏自动隐藏,则不会。如果我知道如何获得“正确”的大小,或者在最坏的情况下如何确定任务栏何时自动隐藏,然后跳过这部分测试,我可以在单元测试中允许这样做。谷歌搜索和 Stackoverflowing 没有帮助。我知道有人可以,我提前感谢您!

一如既往...

最佳答案

如果我理解正确的话Full-Screen Exclusive Mode ,那么您的窗口覆盖了所有屏幕尺寸,包括 Windows 任务栏(自动隐藏)所需的区域,我不知道在所有情况下如何确定 Windows 任务栏#HEIGHT 的正确方法,因为这些高度也取决于应用主题,或不取决于

1)(非常丑陋的方式)让显示屏底部留出一些空白,

2) 将应用程序窗口更改为 JFrame,然后任务栏覆盖 JFrame 的底部,但您必须丢失 FullScreenExclusiveMode,这与其他窗口一样

3) 将应用程序窗口更改为未修饰的 JDialog 或 JWindow (默认未修饰,但 JFrame 需要存在,当然永远不可见,只是需要作为父级) 注意:尽量避免使用JDialog#setModal(true) ,因为任务栏将再次不可访问,但在这种情况下您可以/必须使用 JDialog#setModalityType ,类似于模拟FullScreenExclusiveMode,但自动隐藏任务栏可以通过访问并覆盖JDialog的底部,但您的窗口无法移动到Back()或iconified()

关于java - 自动隐藏任务栏和最大屏幕空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348960/

相关文章:

java - Spring批MySql序列 "Could not obtain last_insert_id()"重新保护引擎类型

java - 我需要一个程序,将我的 Java 项目映射到一些容易定义的列表中

java - 显示带有使用反射关联的对象名称和方法的工具提示?

java - 不同的 JEditorPanes 显示 html 内容,使用相同的 css 规则

java - Swing 上自定义组件的问题

java - JPanel 绘图不工作

java - PreparedStatement 的 setInt() 不适用于 PostgreSQL

java - StorageService 在 GluonHQ 框架上出现错误 - 如何解决此问题?

java - 如何将 Jlabel 从一个 JPanel 移动到另一个 JPanel

java - 如何为多个不同的无名 JButton 设置 ActionListener。当他们都有相同的名字或没有名字时,如何能够独立对待他们?