使用JFrame获取最大屏幕大小

时间:2016-03-13 17:07:03

标签: java jframe jpanel pong

我一直在努力用Java制作Pong,但我似乎无法准确设置JFrame的大小。这是我的主要课程:

import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;

public class Pong extends JFrame {

    private final Game panel;
    private final Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    public Pong() {
        setTitle("Pong");
        setSize(screenSize);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        panel = new Game(this);
        add(panel);
    }

    public static void main(String[] args) {
        new Pong();
    }

}

当我运行我的程序时,窗口占据了整个屏幕,但是当我尝试获取屏幕的尺寸时,它们比窗口的尺寸大,导致在窗口的较低范围设置的任何东西都得到隔断。我发现获得真实维度的唯一方法是在面板类中调用this.getHeight()this.getWidth()this.getSize()。如何才能立即获得真正的尺寸?

4 个答案:

答案 0 :(得分:1)

您可以使用JFrame#setExtendedState(JFrame.MAXIMIZED_BOTH)

f.setExtendedState(JFrame.MAXIMIZED_BOTH);

与您在操作系统中放大窗口时的效果相同

使用此方法,您现在可以通过调用上述问题中提到的不同方法来获得“真实”维度。

答案 1 :(得分:1)

尝试调用方法setExtendedState

public class Pong extends JFrame {

    private final Game panel;

    public Pong() {
        setTitle("Pong");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        panel = new Game(this);
        add(panel);
        setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
        //setVisible(true);
    }

    public static void main(String[] args) {
        Pong pong = new Pong();
        pong.setVisible(true);
    }

}

答案 2 :(得分:0)

import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JFrame;

public class Pong extends JFrame {

    private final Game panel;
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
double width = screenSize.getWidth();
double height = screenSize.getHeight();

    public Pong() {
        setTitle("Pong");
        setSize((int)width,(int)height);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        panel = new Game(this);
        add(panel);
    }

    public static void main(String[] args) {
        new Pong();
    }

}

检查此问题How can I get screen resolution in java?

答案 3 :(得分:0)

输入你的代码:

this.setExtendedState(JFrame.MAXIMIZED_BOTH);

您可以在documentation找到详细信息。

关于同一主题的另一个问题是here