文档上说gridx,gridy为组件的位置,gridwidth,gridheight为指定在组件显示区域的一行(列)中的单元格数,为什么我任意改变这四个变量的值按钮的大小位置都不变化?不是说gridx,gridy为组件的位置吗?那么改变其值应该改变组件的位置啊,为什么我该变其值组件位置没有变化呢?哪位高手能详细的讲解一下GridBagLayout的用法啊?
public class test {
public static void main(String[] args){
JFrame frame = new JFrame("测试");
JPanel panel = new JPanel();
GridBagLayout layout = new GridBagLayout();
frame.getContentPane().add(panel);
panel.setLayout(layout);
GridBagConstraints con = new GridBagConstraints();
JButton button1 = new JButton("按钮1");
JTextField text = new JTextField();
text.setSize(10, 100);
con.gridx = 0;
con.gridy = 0;
con.gridwidth = 1;
con.gridheight = 1;
layout.setConstraints(button1, con);
panel.add(button1);
frame.setSize(new Dimension(500,500));
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

解决方案 »

  1.   

    资料里的
    lz看一下吧
    GridBagLayout的使用:是java中最有弹性但也是最复杂的一种版面管理器。它只有一种构造函数,但必须配合
                               GridBagConstraints才能达到设置的效果。
        GridBagLayout的类层次结构图:
        java.lang.Object
         --java.awt.GridBagLayout
    构造函数:
        GirdBagLayout()建立一个新的GridBagLayout管理器。
        GridBagConstraints()建立一个新的GridBagConstraints对象。
        GridBagConstraints(int gridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty,
                           int anchor,int fill, Insets insets,int ipadx,int ipady)建立一个新的GridBagConstraints对象
                          ,并指定其参数的值。
     参数说明:
     gridx,gridy:设置组件的位置,gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。
                 若将gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。建议定义出
                 gridx,gridy的位置,以便以后维护程序。表示放在几行几列,gridx=0,gridy=0时放在0行0列。 gridwidth,gridheight:用来设置组件所占的单位长度与高度,默认值皆为1。你可以使用GridBagConstraints.REMAINDER常
                          量,代表此组件为此行或此列的最后一个组件,而且会占据所有剩余的空间。 weightx,weighty:用来设置窗口变大时,各组件跟着变大的比例,当数字越大,表示组件能得到更多的空间,默认值皆为0。
     anchor:         当组件空间大于组件本身时,要将组件置于何处,有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、
                     WEST、NORTHWEST可供选择。
     insets:设置组件之间彼此的间距,它有四个参数,分别是上,左,下,右,默认为(0,0,0,0).
     ipadx,ipady:设置组件内的间距,默认值为0。