为什么每次运行时我的框架都设置为一个小窗口?

时间:2016-12-21 01:20:36

标签: java swing jframe

我正在关注这个人的视频:https://www.youtube.com/watch?v=1gir2R7G9ws。 另外,我使用Netbeans。每次我运行它,就像我尝试使用优先大小而不是设置大小时,它仍然会输出一个小窗口。

public class APCSGame extends Canvas implements Runnable{

...

public final int WINWIDTH=1000,WINHEIGHT=500, SCALE=1;;
JFrame frame;

private BufferedImage backgroundMenu=null;

public APCSGame(){

    frame=new JFrame("Testing it out boiiiii");
    setSize(WINWIDTH*SCALE,WINHEIGHT*SCALE);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(null);

    frame.add(this);
    frame.pack();

    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}

...

public static void main(String[] args) {
    new APCSGame().start();

}

}

3 个答案:

答案 0 :(得分:2)

为什么要将Frame的布局设置为null

请删除或评论此行:frame.setLayout(null);

然后它使用默认的FlowLayout布局管理器。或者您可以指定其他布局管理器。

答案 1 :(得分:0)

如果您想在示例中创建没有布局管理器的容器;

    frame.setLayout(null);

这意味着,容器儿童将拥有绝对的位置。您需要执行以下操作;

  • 为每个容器的子项
  • 调用Components类setbounds方法
  • 调用Component类重绘方法

虽然可以不使用布局管理器,但是如果可能的话,应该使用布局管理器。

答案 2 :(得分:-1)

使用此代码设置大小

this.setSize(width,height);

frame.setSize(width,height);