Java 使用JFrame获得最大屏幕大小
我一直在用Java制作乒乓球,但我似乎无法准确设置JFrame的大小。这是我的主要课程:Java 使用JFrame获得最大屏幕大小,java,jframe,jpanel,pong,Java,Jframe,Jpanel,Pong,我一直在用Java制作乒乓球,但我似乎无法准确设置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.getDefault
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();
}
}
当我运行程序时,窗口占据了整个屏幕,但当我尝试获取屏幕的尺寸时,它们比窗口的尺寸大,导致在窗口较低范围设置的任何内容都被切断。我发现获得真实尺寸的唯一方法是在panel类中调用this.getHeight()
,this.getWidth()
,或this.getSize()
。我怎样才能马上得到真实的尺寸 您可以使用JFrame\setExtendedState(JFrame.MAXIMIZED\u两者)
它的效果与在操作系统中放大窗口时相同
使用此方法,您现在可以通过调用问题中提到的不同方法获得“真实”维度。尝试调用方法
检查此问题输入代码:
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
您可以在中找到详细信息
关于同一主题的另一个问题是。使用这种方法,结果看起来是一样的。似乎它在高度中包含了窗口的菜单栏。@CarterS。你想要JFrame的大小而不是桌面的大小吗?我现在没听清你的意思。在乒乓球比赛中,我的球在弹起之前会从屏幕底部飞出,因为我无法得到确切的窗口高度
game.getHeight()
距离窗口边缘约15像素。是否尝试设置面板(游戏)的大小而不是JFrame(Pong)?我现在在panel类中使用this.getSize()
来解决此问题。谢谢你的帮助!
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);
}
}
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();
}
}
this.setExtendedState(JFrame.MAXIMIZED_BOTH);