0

您好,我正在用 Java 制作游戏,我使用 DefaultToolkit 获得了 screenSize,但问题是如果它是 FULLSCREEN 则检测屏幕的大小。如何获得游戏屏幕(不是全屏)占用的区域的屏幕大小。更准确地说,我的精灵正在移动到底部屏幕的边缘之外,因为系统工具栏为其添加了额外的“填充”。如何获得游戏屏幕占用的区域大小?非常感谢

4

2 回答 2

3

我认为 Screen Bounds 是您正在寻找的:

import java.awt.*;
import javax.swing.*;

public class FrameInfo
{
    public static void main(String[] args)
    {
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle bounds = env.getMaximumWindowBounds();
        System.out.println("Screen Bounds: " + bounds );

        GraphicsDevice screen = env.getDefaultScreenDevice();
        GraphicsConfiguration config = screen.getDefaultConfiguration();
        System.out.println("Screen Size  : " + config.getBounds());
        System.out.println(Toolkit.getDefaultToolkit().getScreenSize());

        JFrame frame = new JFrame("Frame Info");
        frame.setSize(200, 200);
        frame.setVisible( true );

        System.out.println("Frame Size   : " + frame.getSize() );
        System.out.println("Frame Insets : " + frame.getInsets() );
        System.out.println("Content Size : " + frame.getContentPane().getSize() );
     }
}
于 2013-02-13T03:29:56.877 回答
1

您可以使用 Insets 获取任务栏的大小和其他内容。这是一个获取不包括任务栏/其他的屏幕大小的示例。

// Screen size
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

// Screen insets
Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(getGraphicsConfiguration());

// Get the real width/height
int width = screen.getWidth() - insets.left - insets.right;
int height = screen.getHeight() - insets.top - insets.bottom;
于 2013-02-13T03:28:19.547 回答