gpt4 book ai didi

java - BorderLayout 中心的网格

转载 作者:行者123 更新时间:2023-12-02 04:49:03 26 4
gpt4 key购买 nike

我一直在尝试在这个的死点制作一个 2x2 网格,但我做不到。网格要么会覆盖其余部分,要么会适合,但我只能看到最后一个按钮。

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

public class Buttons extends JFrame
{

public static void main(String[] args)
{
JFrame frame = new JFrame();
frame.setTitle("Example 1");
frame.setSize(400,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new BorderLayout());

JButton b1 = new JButton("TOP");
JButton b2 = new JButton("LEFT");
JButton b3 = new JButton("RIGHT");
JButton b4 = new JButton("BOTTOM");

frame.add(b1, BorderLayout.PAGE_START);
frame.add(b2, BorderLayout.LINE_START);
frame.add(b3, BorderLayout.LINE_END);
frame.add(b4, BorderLayout.PAGE_END);



JPanel grid = new JPanel( new GridLayout(0, 2) );
JPanel wrapper = new JPanel();
wrapper.add( grid );
frame.add(wrapper, BorderLayout.CENTER);

JButton bb1 = new JButton("1");
JButton bb2 = new JButton("2");
JButton bb3 = new JButton("3");
JButton bb4 = new JButton("4");


grid.add( bb1 );
grid.add( bb2 );
grid.add( bb3 );
grid.add( bb4 );

frame.setVisible(true);

}
private JPanel frame;
private JButton b1,b2,b3,b4,bb1,bb2,bb3,bb4;
}

已添加 4 个额外按钮,但我想删除中间的空间

最佳答案

最简单的方法是在主面板上使用 GridBagLayout 并在子面板上使用 GridLayout:

JPanel grid = new JPanel( new GridLayout(0, 2) );
grid.add( b1 );
grid.add( b2 );
grid.add( b3 );
grid.add( b4 );

frame.setLayout( new GridBagLayout() );
frame.add(grid, new GridBagConstraints());

另一种方法是使用 BorderLayout,但是您将需要一个包装面板,以便网格面板不会增长:

JPanel grid = new JPanel( new GridLayout(0, 2) );
grid.add( b1 );
grid.add( b2 );
grid.add( b3 );
grid.add( b4 );

JPanel wrapper = new JPanel();
wrapper.add( grid );
frame.add(wrapper, BorderLayout.CENTER);

编辑:

我们认为您希望按钮处于首选尺寸并居中。添加包装面板是为了防止按钮改变大小。

如果您希望中心的按钮随着框架大小的变化而增大/缩小,则不需要包装面板:

 //frame.add(wrapper, BorderLayout.CENTER);
frame.add(grid, BorderLayout.CENTER);

关于java - BorderLayout 中心的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29418769/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com