在Java + Windows 8上,如何在使用并排应用和多屏幕时获得可用的屏幕边框?

时间:2014-03-26 16:28:06

标签: java swing windows-8 multiscreen

在应用程序的某个时刻,我需要获得可用的屏幕的整个区域(没有工具栏,在Windows 8中,并排应用程序)。这是通过调用

来完成的
      GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();

或者,如果你想直接进行

 GraphicsConfiguration gc = myGraphicsDevice.getDefaultConfiguration();
    Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
    Rectangle usableBounds = gc.getBounds();
    usableBounds.x += insets.left;
    usableBounds.y += insets.top;
    usableBounds.width -= (insets.left + insets.right);
    usableBounds.height -= (insets.top + insets.bottom);

(这与SunGraphicsEnviroment执行第一次操作的方式完全相同)。

我遇到的问题是,当我在单屏幕上时,getScreenInsets()正确地考虑了并排应用程序(得到像java.awt.Insets一样的结果[顶部= 0,左= 971,底部= 48,右= 0])。但是,如果我在一个多屏幕环境中,两个屏幕显示左边为0的插图(java.awt.Insets [top = 0,left = 0,bottom = 60,right = 0])

getInsets应该与多屏幕使用不同,还是这是一个Java问题?我使用的是1.7v40。我也没有在Oracle错误数据库中找到这样的东西。

1 个答案:

答案 0 :(得分:0)

回答自己:是的。这是一个Java Bug

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6899304

如果您需要这样做,则需要转到本机代码并使用Windows API或等待Java补丁。