BorderLayout 中间有很大的空隙

BorderLayout has large gap in the center

我正在编写一个程序,目的是在 window 的西侧和东侧使用带两个按钮的 BorderLayout。不知何故,中间出现了一个很大的缺口。有什么方法可以消除这个间隙并让两个按钮彼此相切吗?下面我附上了我的代码。任何帮助表示赞赏:)。

import java.applet.*;
import java.awt.*;

public class HON extends Applet {

Button p1;
Button p2;
BorderLayout layout;

public void init() {
    layout = new BorderLayout();
    setLayout(layout);

    p1 = new Button("text");
    p2 = new Button("text");

    add(p1, BorderLayout.WEST);
    add(p2, BorderLayout.EAST);

}

public void stop() {

}}

BorderLayout 顾名思义,就是把东西放在边界上。这就是中间出现缺口的原因。如果你想要有 2 个并排按钮的东西,我会推荐 GridLayout 以简单。代码会是这样的:

GridLayout layout = new GridLayout(1,2); // Or (2,1), depending on how you want orientation
JPanel pane = new JPanel();
pane.setLayout(layout);
pane.add(leftButton); // Where leftButton is the JButton (or other swing component) on the left
pane.add(rightButton); // Same goes for the right JButton
// Then add your JPanel to the Frame and all that jazz below.

如果我正确理解你的问题,这应该可以满足你的要求。另请注意,我正在使用 Swing 组件,因为它们仍由 Java 维护。如果您需要任何其他帮助,请留下 comment/question。

编辑: 请注意 MadProgrammer 建议使用 GridBagLayout 的评论。这比普通的 GridLayout 更 powerful/versatile,但也更难学习,因此您可以根据自己的喜好选择。