在应用程序的某个时刻,我需要获得可用的屏幕的整个区域(没有工具栏,在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错误数据库中找到这样的东西。
答案 0 :(得分:0)
回答自己:是的。这是一个Java Bug
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6899304
如果您需要这样做,则需要转到本机代码并使用Windows API或等待Java补丁。