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

Java 自动隐藏任务栏和最大屏幕空间,java,swing,Java,Swing,有很好的文档记录了如下代码 final Rectangle bounds = device.getDefaultConfiguration().getBounds(); final Insets screenInsets = Toolkit.getDefaultToolkit().getScreenInsets( device.getDefaultConfiguration()); bounds.x = screenInsets.left; bo

有很好的文档记录了如下代码

    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;
其中
设备
是一些有效的
图形设备
给出一个矩形,该矩形应为设备允许的最大值。还有其他一些方式似乎都有缺点。对于MS Windows上的主显示,如果任务栏未自动隐藏,则此选项有效。但是,如果任务栏是自动隐藏的,则不会自动隐藏。若我知道如何获得“正确”的大小,或者在最坏的情况下如何确定任务栏何时自动隐藏,那个么我可以在单元测试中考虑到这一点,然后跳过测试的这一部分。谷歌搜索和堆垛机泛滥都没有帮助。我知道有人可以,我提前谢谢你

像往常一样…

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

1) (非常难看的方式)让显示屏底部有一些空白

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

3) 将应用程序窗口更改为未修饰的
JDialog
,或JWindow(由defalut未修饰,但JFrame必须存在,确保永远不可见,只需要作为父窗口) 注意:尽量避免使用,因为任务栏将再次不可访问,但在这种情况下,您可以/必须使用,准模拟全屏排他性模式,但自动隐藏任务栏可以通过可访问并覆盖JDialog底部,但如果我理解正确,您的窗口无法移动到back()或iconified()

,然后你的窗口覆盖了所有屏幕大小,包括Windows任务栏所需的区域(自动隐藏),在所有情况下,我不知道如何正确确定Windows任务栏的高度,因为这些高度也取决于应用的主题,或者不取决于应用的主题

1) (非常难看的方式)让显示屏底部有一些空白

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

3) 将应用程序窗口更改为未修饰的
JDialog
,或JWindow(由defalut未修饰,但JFrame必须存在,确保永远不可见,只需要作为父窗口)
注意:尽量避免使用,因为任务栏将再次不可访问,但在这种情况下,您可以/必须使用,准模拟全屏排他性模式,但自动隐藏任务栏可以通过可访问并覆盖JDialog的底部,但您的窗口无法移动到back()或iconified()

当任务栏自动隐藏时会发生什么?除了Bombe提到的,我有一个启用自动隐藏的Win 7操作系统,因此测试代码(我指的是与不可编译的代码片段相反的代码片段)会更有用。另请参见此。当任务栏自动隐藏时会发生什么?除了Bombe提到的,我有一个启用了自动隐藏的Win7操作系统,所以测试代码(我的意思是一个与不可编译的代码片段相反的代码片段)会更有用。