用Java确定屏幕高度

时间:2013-01-07 02:26:00

标签: java swing jframe awt fullscreen

我使用以下内容在全屏模式下使用JFrame:

setExtendedState(JFrame.MAXIMIZED_BOTH);
setUndecorated(true);

我想知道身高。请注意,Toolkit.getDefaultToolkit()。getScreenSize()不起作用,因为我在Mac上并且实际高度应该排除屏幕顶部Mac bar事物的高度。

例如,对于Windows,高度应排除起始栏。因此,我想知道窗户空间的真实高度。

2 个答案:

答案 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()似乎为默认监视器返回相同的结果。前面提到的方法的好处是它可以用来确定任何设备的“安全”界限

归功于Java - Screen Size on a Mac

答案 1 :(得分:0)

frame.getContentPane()的getHeight();

使用此方法时,您将获得JFrame的高度,而不是屏幕。它也排除了边界高度。