2014-09-29 87 views
2
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的JFrame - 设置行和列在GridLayout

该程序在屏幕上显示8个按钮。我无法理解按钮的布局安排。注意row = 3,column = 2。当运行该程序时,按钮的配置是行= 3和列= 3 ....

更改的行数实际上根据给定的行数改变了布局,但改变的列数没有按不会改变布局,列数将始终保持为2.为什么?这可能是一个屏幕尺寸问题。

回答

2

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

当行数和列数已设置 为非零值,或者由构造方法或setRows和 setColumns方法,指定的列数为忽略。 相反,列数从指定行数和 在布局组件的总数量来确定。所以, 例如,如果指定了三行两列和9个 组件添加到布局,它们将被显示为三个 行三列。仅当行数设置为零时,指定列数才会影响 布局。

“只有当行数设置为零时,指定列数才会影响布局。”因此,如果你想保持不变的列数,行指定为0:

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