import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class GridLayoutTest {
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("GridLayout Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridLayout(3, 2));
frame.add(new JButton("Button 1"));
frame.add(new JButton("Button 2"));
frame.add(new JButton("Button 3"));
frame.add(new JButton("Button 4"));
frame.add(new JButton("Button 5"));
frame.add(new JButton("Button 6"));
frame.add(new JButton("Button 7"));
frame.add(new JButton("Button 8"));
frame.pack();
frame.setVisible(true);
}
}
我从本教程网站获得了代码:http://www.java2s.com/Tutorial/Java/0240__Swing/HowtoUseGridLayout.htm
此程序在屏幕上显示8个按钮。我无法理解按钮的布局安排。请注意,row = 3,column = 2。当我运行程序时,按钮的排列是row = 3和column = 3 ....
更改行数实际上会根据给定的行号更改布局,但更改列数不会更改布局,列数将始终保持为2.为什么会这样?这可能是屏幕尺寸问题。
答案 0 :(得分:2)
它是GridLayout
类的记录行为。你有read the docs?
当设置了行数和列数时 通过构造函数或setRows和非零值 setColumns方法,指定的列数将被忽略。 而是根据指定的数量确定列数 行和布局中的组件总数。因此对于 例如,如果指定了三行和两列,则为九行 组件添加到布局中,它们将显示为三个 三列的行。指定列数会影响 仅当行数设置为零时才进行布局。
"仅当行数设置为零时,指定列数才会影响布局。"因此,如果要保持列数不变,请为行指定0:
frame.setLayout(new GridLayout(0, 2));