我使用以下内容在全屏模式下使用JFrame:
setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);
我想知道身高。请注意,Toolkit.getDefaultToolkit()。getScreenSize()不起作用,因为我在Mac上并且实际高度应该排除屏幕顶部Mac bar事物的高度。
例如,对于Windows,高度应排除起始栏。因此,我想知道窗户空间的真实高度。
答案 0 :(得分:3)
我用这个
public static Rectangle getScreenViewableBounds() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
Rectangle bounds = new Rectangle(0, 0, 0, 0);
if (gd != null) {
GraphicsConfiguration gc = gd.getDefaultConfiguration();
bounds = gc.getBounds();
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc);
bounds.x += insets.left;
bounds.y += insets.top;
bounds.width -= (insets.left + insets.right);
bounds.height -= (insets.top + insets.bottom);
}
return bounds;
}
确定“安全”屏幕边界。这会考虑屏幕插图并产生一个“安全”可视区域的矩形......
<强>更新强>
经过一些测试后,我很满意(据我有多个屏幕的Windows)GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds()
似乎为默认监视器返回相同的结果。前面提到的方法的好处是它可以用来确定任何设备的“安全”界限
答案 1 :(得分:0)
frame.getContentPane()的getHeight();
使用此方法时,您将获得JFrame的高度,而不是屏幕。它也排除了边界高度。