Swing BorderLayout:按钮之间没有空间,没有中心间隙

问题描述

我有这个代码

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

public class Test extends JFrame {
    public test()  {
        JPanel panel = new JPanel();

        JButton leftButton = new JButton("Left");
        JButton rightButton = new JButton("Right");
        JButton bottomButton  = new JButton("Bottom");

        Container container = getContentPane();
        container.add(leftButton,BorderLayout.LINE_START);
        container.add(rightButton,BorderLayout.LINE_END);
        container.add(bottomButton,BorderLayout.PAGE_END);

        pack();
        setVisible(true);
        setDefaultCloSEOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        Test test = new test();
    }
}

当我运行它时,它显示

enter image description here

但是当我调整这个窗口的大小时:

enter image description here

如何使按钮占据 100% 的窗口,如下所示:

enter image description here

我尝试这样做:

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

public class Test extends JFrame {
    public test()  {
        JPanel panel = new JPanel();

        JButton leftButton = new JButton("Left");
        JButton rightButton = new JButton("Right");
        JButton bottomButton  = new JButton("Bottom");

        panel.add(leftButton);
        panel.add(rightButton);

        Container container = getContentPane();
      //  container.add(leftButton,BorderLayout.LINE_START);
        //container.add(rightButton,BorderLayout.LINE_END);
        container.add(panel,BorderLayout.CENTER);
        container.add(bottomButton,BorderLayout.PAGE_END);

        pack();
        setVisible(true);
        setDefaultCloSEOperation(EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        Test test = new test();
    }
}

效果更差:

enter image description here

enter image description here

我也试过:

container.add(new JLabel(""),BorderLayout.CENTER);

但它给出了原始结果。

解决方法

通过在主 GUI 的 GridLayout(红色)的 CENTER 中使用 BorderLayout(绿色)作为按钮,可以轻松实现此布局。

enter image description here