2011-09-08 73 views
1

这是有据可查的是类似于下面的代码自动隐藏任务栏和最大屏幕空间

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没有帮助。我知道有人可以提前谢谢你!

一如既往...

+2

任务栏自动隐藏时发生了什么? – Bombe

+0

除了Bombe提到的,我有一个Win 7操作系统,启用了自动隐藏功能,所以测试代码(我的意思是[SSCCE](http://pscode.org/sscce.html),而不是无法编译代码片段)会更有用。 –

+0

另请参阅此[回复](http://stackoverflow.com/questions/6790600/java-gui-hides-windows-taskbar/6791978#6791978)。 – trashgod

回答

1

,如果我理解正确Full-Screen Exclusive Mode,那么你的窗口覆盖所有屏幕尺寸,包括Windows任务栏(自动隐藏),我不知道正确的方式如何确定Windows所需面积任务栏#高度,在所有情况下,因为这些高度依赖应用主题太大,或不

1)(非常丑陋的方式)使那些在显示器的底部一些空白,

2)改变Aplication窗口为JFrame ,然后TaskBar覆盖JFrame的底部部分,但是您必须丢失FullS creenExclusiveMode,这是窗口,任何其他

3)改变Aplication窗口未装饰JDialog,或的JWindow(由defalut未装修,但要求存在了的JFrame,肯定不可见的,只是需要作为父母) 注意:尽量避免使用JDialog#setModal(true),因为TaskBar会再次无法访问,但在这种情况下,您可以/必须使用JDialog#setModalityType,准确模拟FullScreenExclusiveMode,但自动隐藏任务栏可以通过访问并覆盖JDialog的底部,但您的窗口无法移动到Back()或图标化()