使用 BorderLayout 调整 JPanel 的大小

Resizing JPanel With BorderLayout

我正在尝试调整 BorderLayout 中心面板的大小,但大小没有改变。它不断填充可用的框架的其余部分。我试过设置首选尺寸但没有效果。我想要框架的大小,但只需要中心的一部分实际上是一个面板供以后使用。

import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;

public class Gui extends JFrame {
    Border blackline = BorderFactory.createLineBorder(Color.black);
    private JPanel board;
    private JPanel buttons;
    private JButton setMissing, by4, by8;

    public Gui(){
        setUpGui();
    }

    public void setUpGui(){
        this.setSize(1000,1000);
        this.setTitle("Comp361 Assignment One");
        addButtons();
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        board = new JPanel();

        board.setPreferredSize(new Dimension(400,400));
        this.add(board, BorderLayout.CENTER);
        //Sboard.setBackground(Color.Gray);
        board.setBorder(blackline);
        this.setVisible(true);
    }

    public void addButtons(){
        buttons = new JPanel(new FlowLayout());
        setMissing = new JButton("Set X");
        by4 = new JButton("4 by 4");
        by8 = new JButton("8 by 8");
        buttons.add(setMissing);
        buttons.add(by4);
        buttons.add(by8);
        this.add(buttons,BorderLayout.PAGE_START);
    }

    public static void main (String[] args){
        new Gui();
    }
}

对于中央面板周围的额外填充,您可以将它放在带有 GridBagLayout 的面板(无限制)中使其居中,然后将 GBL 面板添加到 CENTERBorderLayout.