感谢您花时间阅读本文。我希望它不会令人困惑,如果需要任何其他信息,请告诉我!
问题:我正在制作一个类似蛇的游戏,我创建了一个 JFrame,然后添加了 JPanel。好吧,如果我不在 JFrame 中设置它的大小,它将大小约为 100 x 20。当我设置它的大小时,它保持在设置的尺寸。但是,如果我 pack() 它,当我在 JPanel 中定义大小时,它会缩小到 100 x 20 左右。我也设定了界限,没有运气。我使用 FlowLayout() 和 BorderLayout() 也没有成功。现在我的游戏运行正常,没有任何问题,除了框架。它会切断两侧,除非我做一些我不想做的体操。
目标:我希望能够将帧大小正确地设置为我指定的宽度和高度,并让面板向下移动一点以增加游戏文本的空间,这样它就不会阻塞任何东西。
基本上我很困惑和慌乱,我花了几天时间,到目前为止我还没有成功。
JFrame 类:
public class main extends JFrame {
/**
* @param args the command line arguments
*/
public main(){
Board game = new Board();
setLayout(new BorderLayout(0, 50));
setSize(game.getGameWidth(), game.getGameHeight());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("BlockRunner");
getContentPane().add(game);
setResizable(false);
setVisible(true);
}
}
我的董事会课程:
public class Board extends JPanel implements ActionListener, KeyListener{
private int width = 600;
private int height = 400;
Board(){
addKeyListener(this);
setFocusable(true);
setBackground(Color.LIGHT_GRAY);
setSize(width, height);
InitGame();
}
}
我愿意尝试任何人愿意为我提供的任何东西。感谢您的时间!
编辑 1:(由于用户的回答。)使用 setPerferredSize()、setMinmumSize() 和 setMaximumSize() 不会影响结果。