【问题标题】:Swing BorderLayout: Make no space between buttons, no center gapSwing BorderLayout:按钮之间没有空间,没有中心间隙
【发布时间】:2021-05-23 01:34:37
【问题描述】:

我有这个代码:

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();
    }
}

当我运行它时,它显示:

但是,当我调整此窗口的大小时:

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

我尝试过这样做:

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();
    }
}

但效果更差:

我也试过了:

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

但它给出了原始结果。

【问题讨论】:

标签: java swing layout-manager border-layout


【解决方案1】:

通过使用GridLayout(绿色)作为按钮,使用CENTERBorderLayout(红色)作为主GUI,可以轻松实现这种布局。

【讨论】: