本文介绍了为什么调用JFrame.pack()会增加额外的空间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
最初,我使用的代码运行良好,但有点令人费解。在将方法的某些部分移动到JFrame的构造函数中之后,一切正常。
Originally, the code I was using worked fine, but was a bit convoluted. After moving some parts of a method into the constructor for the JFrame, things were working properly.
除了使用pack()以使框架具有合适的大小之外的所有内容。
Everything except using pack() to make the frame the proper size.
以下是原始代码:
public class BaseGameFrame extends JFrame {
public static final int WINDOWED = 0;
public static final int UFS = 1;
protected BaseGamePanel gamePanel;
public BaseGameFrame(String title, int pWidth, int pHeight, long period, int windowType){
super(title);
switch(windowType){
case UFS:
this.setUndecorated(true);
Rectangle screenSize = this.getGraphicsConfiguration().getBounds();
pWidth = screenSize.width;
pHeight = screenSize.height;
break;
default: break;
}
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.createPanel(pWidth, pHeight, period);
}
protected void createPanel(final int pWidth, final int pHeight, long period){
this.gamePanel = new BaseGamePanel(pWidth, pHeight, period);
this.add(this.gamePanel);
this.pack();
}
public static void main(String[] args){
new BaseGameFrame("Test", 800, 600, 20L * 1000000L, UFS);
}
}
这是在修改之后:
public class BaseGameFrame extends JFrame {
protected BaseGamePanel gamePanel;
public BaseGameFrame(String title, VideoType vType, BaseGamePanel gp){
super(title);
switch(vType){
case UFS:
this.setUndecorated(true);
Rectangle screenSize = this.getGraphicsConfiguration().getBounds();
gp.setPDimensions(new Dimension(screenSize.width, screenSize.height));
break;
default: break;
}
this.add(gp);
this.pack();
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
BaseGamePanel gp = new BaseGamePanel(800, 600, 20L * 1000000L);
new BaseGameFrame("Test", VideoType.UFS, gp);
}
}
我不太确定是什么问题是..但最终发生的是:
I'm not quite sure what the problem is.. but what ends up happening is this:
推荐答案
确保在调用<$之前调用 setResizable(false)
c $ c> pack()或 setVisible(true)
这篇关于为什么调用JFrame.pack()会增加额外的空间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!