我一直试图在死亡中心做一个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个额外的按钮,但我想删除中心的空间
答案 0 :(得分:2)
最简单的方法是在主面板上使用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);