0

以下を使用して JFrame を全画面表示モードにしています。

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

そして身長が知りたいです。Toolkit.getDefaultToolkit().getScreenSize() は機能しないことに注意してください。私は Mac を使用しており、実際の高さは画面上部の Mac バーの高さを除外する必要があるためです。

たとえば、Windows の場合、高さはスタート バーを除外する必要があります。したがって、私が持っている窓スペースの真の高さを知りたいです。

4

2 に答える 2

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 の功績- Mac の画面サイズ

于 2013-01-07T02:38:45.090 に答える
0

frame.getContentPane().getHeight();

このメソッドを使用すると、画面ではなく JFrame の高さが取得されます。また、境界線の高さも除外されます。

于 2013-01-07T02:33:29.273 に答える