Java Swing JPanel 大小不起作用

Java Swing JPanel size not working

    frame = new JFrame();
    frame.setTitle("Chess Legends");
    frame.setBounds(100, 100, 810, 830);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //game panel
    panelGame = new JPanel();
    panelGame.setBackground(new Color(0, 0, 0));
    frame.getContentPane().add(panelGame, BorderLayout.CENTER);
    panelGame.setLayout(null);

    //board panel
    panelBoard = new JPanel();
    panelBoard.setBackground(new Color(255, 255, 255));
    panelBoard.setBounds(5, 5, 800, 800);
    panelGame.add(panelBoard);

这是我的代码。我希望 panelGame 填满整个框架。然后我希望 panelBoard 在 panelGame 中占用 800x800 大小。但是我的panelBoard好像太大了

框架已经大于 panelBoard 的边界,但是当 GUI 启动时..我的 panelBoard 超出了框架。为什么?

my panelBoard extends outside the frame. Why??

框架有装饰(边框、标题栏),占 space。

不要使用空布局,也不要尝试对尺寸进行微观管理。而是使用布局管理器和 pack() 框架,让布局管理器确定大小。

如果您希望面板为 800 x 800,则将 getPreferredSize() 方法重写为 return 该尺寸。

然后你做这样的事情:

PanelBoard panelBoard = new PanelBoard(); // with overridden getPreferredSize()

JPanel panelGame = new JPanel( new BorderLayout() );
panelGame.setBorder( new EmptyBorder(5, 5, 5, 5) );
panelGame.add( panelBoard );

frame.add( panelGame );
frame.pack();
frame.setVisible();