Java 如何获得真正可用的分辨率

Java 如何获得真正可用的分辨率,java,swing,window,size,Java,Swing,Window,Size,与 Toolkit.getDefaultToolkit().getScreenSize() 我知道屏幕的大小 但通常这不是我自己程序的可用大小,因为mac电脑的顶部有一个菜单栏,底部有一个图标栏。Windows也有一个图标栏。那么如何获得真正的可用空间呢?我不确定这是否可行,但请尝试图形配置/图形设备。您可能无法获得一个在OSX上打折dock的边界框,因为dock的区域仍然被视为屏幕空间。我可以在上面移动窗口。我还可以将dock移动到屏幕的侧面而不是底部(Windows任务栏也是如此) 来自:

Toolkit.getDefaultToolkit().getScreenSize()

我知道屏幕的大小


但通常这不是我自己程序的可用大小,因为mac电脑的顶部有一个菜单栏,底部有一个图标栏。Windows也有一个图标栏。那么如何获得真正的可用空间呢?

我不确定这是否可行,但请尝试图形配置/图形设备。您可能无法获得一个在OSX上打折dock的边界框,因为dock的区域仍然被视为屏幕空间。我可以在上面移动窗口。我还可以将dock移动到屏幕的侧面而不是底部(Windows任务栏也是如此)

来自:

现在您有了与平台相关的桌面装饰的界限。我周围没有Mac电脑,所以我只验证了它在WinXP/JDK6上工作


请注意,如果您自动隐藏任务栏,则边界不包括任务栏,这是正确的。

我的答案只是向前迈出了一小步。@Geoffrey这会产生改变应用程序外观的副作用,对吗?这有必要吗?我不明白它对本地
图形环境
@muffin有什么影响,我想他们只是告诉你把
图形环境
部分放在外观之后
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle bounds = ge.getMaximumWindowBounds();