JFrame - 在GridLayout中设置行和列

时间:2014-09-29 04:18:36

标签: java swing button jframe grid-layout

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.为什么会这样?这可能是屏幕尺寸问题。

1 个答案:

答案 0 :(得分:2)

它是GridLayout类的记录行为。你有read the docs?

吗?
  

当设置了行数和列数时   通过构造函数或setRows和非零值   setColumns方法,指定的列数将被忽略。   而是根据指定的数量确定列数   行和布局中的组件总数。因此对于   例如,如果指定了三行和两列,则为九行   组件添加到布局中,它们将显示为三个   三列的行。指定列数会影响   仅当行数设置为零时才进行布局。

"仅当行数设置为零时,指定列数才会影响布局。"因此,如果要保持列数不变,请为行指定0:

    frame.setLayout(new GridLayout(0, 2));