如下代码示例GridBagLayout,却总不能正常显示,求指教!!!!
- Java code
import java.awt.*;import java.awt.event.*;public class GridBagLayoutDemo extends Frame{ Label l1,l2,l3,l4; TextField tf1,tf2,tf3; Button btn1,btn2; CheckboxGroup cbg; Checkbox cb1,cb2,cb3,cb4; GridBagLayout gb; GridBagConstraints gbc; public GridBagLayoutDemo(String title) { super(title); l1=new Label("Name:"); l2=new Label("Password:"); l3=new Label("Repeate:"); l4=new Label("tujing:"); tf1=new TextField(20); tf2=new TextField(20); tf3=new TextField(20); gb=new GridBagLayout(); setLayout(gb); gbc=new GridBagConstraints(); Panel p=new Panel(); cbg=new CheckboxGroup(); cb1=new Checkbox("Search",cbg,false); cb2=new Checkbox("Advertise",cbg,false); cb3=new Checkbox("Friends",cbg,false); cb4=new Checkbox("Others",cbg,false); p.add(cb1); p.add(cb2); p.add(cb3); p.add(cb4); btn1=new Button("Submit"); btn2=new Button("Reset"); Panel p1=new Panel(); p1.add(btn1); p1.add(btn2); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } }); gbc.fill=GridBagConstraints.HORIZONTAL; addComponent(l1,0,0,1,1); addComponent(tf1,0,2,1,4); addComponent(l2,1,0,1,1); addComponent(tf2,1,2,1,4); addComponent(l3,2,0,1,1); addComponent(tf3,2,2,1,4); addComponent(l4,3,0,1,1); addComponent(p,3,2,1,1); addComponent(p1,4,2,1,5); } public void addComponent(Component c,int row,int col,int nrow,int ncol) { gbc.gridx=col; gbc.gridy=row; gbc.gridheight=ncol; gbc.gridwidth=nrow; gb.setConstraints(c, gbc); add(c); } public static void main(String[] args) { GridBagLayoutDemo mygb=new GridBagLayoutDemo("GridBagLayout"); mygb.setSize(500,400); mygb.setVisible(true); }}
------解决方案--------------------------------------------------------
gbc.fill = GridBagConstraints.HORIZONTAL;
addComponent(l1, 0, 0, 1, 1);
addComponent(tf1, 0, 2, 1, 1);
addComponent(l2, 1, 0, 1, 1);
addComponent(tf2, 1, 2, 1, 1);
addComponent(l3, 2, 0, 1, 1);
addComponent(tf3, 2, 2, 1, 1);
addComponent(l4, 3, 0, 1, 1);
addComponent(p, 3, 2, 1, 1);
addComponent(p1, 4, 2, 1, 5);
------解决方案--------------------------------------------------------
gridheight、gridwidth颠倒了,高对应所占的行数、宽对应所占列数。
- Java code
import java.awt.Button;import java.awt.Checkbox;import java.awt.CheckboxGroup;import java.awt.Component;import java.awt.Frame;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Label;import java.awt.Panel;import java.awt.TextField;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class GridBagLayoutDemo extends Frame{ Label l1,l2,l3,l4; TextField tf1,tf2,tf3; Button btn1,btn2; CheckboxGroup cbg; Checkbox cb1,cb2,cb3,cb4; GridBagLayout gb; GridBagConstraints gbc; public GridBagLayoutDemo(String title) { super(title); l1=new Label("Name:"); l2=new Label("Password:"); l3=new Label("Repeate:"); l4=new Label("tujing:"); tf1=new TextField(20); tf2=new TextField(20); tf3=new TextField(20); gb=new GridBagLayout(); setLayout(gb); gbc=new GridBagConstraints(); Panel p=new Panel(); cbg=new CheckboxGroup(); cb1=new Checkbox("Search",cbg,false); cb2=new Checkbox("Advertise",cbg,false); cb3=new Checkbox("Friends",cbg,false); cb4=new Checkbox("Others",cbg,false); p.add(cb1); p.add(cb2); p.add(cb3); p.add(cb4); btn1=new Button("Submit"); btn2=new Button("Reset"); Panel p1=new Panel(); p1.add(btn1); p1.add(btn2); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } }); gbc.fill=GridBagConstraints.HORIZONTAL; addComponent(l1,0,0,1,1); addComponent(tf1,0,2,1,4); addComponent(l2,1,0,1,1); addComponent(tf2,1,2,1,4); addComponent(l3,2,0,1,1); addComponent(tf3,2,2,1,4); addComponent(l4,3,0,1,1); addComponent(p,3,2,1,1); addComponent(p1,4,2,1,5); } public void addComponent(Component c,int row,int col,int nrow,int ncol) { gbc.gridx=col; gbc.gridy=row; // gridheight、gridwidth颠倒了 // gbc.gridheight=ncol; // gbc.gridwidth=nrow; gbc.gridheight=nrow; gbc.gridwidth=ncol; gb.setConstraints(c, gbc); add(c); } public static void main(String[] args) { GridBagLayoutDemo mygb=new GridBagLayoutDemo("GridBagLayout"); mygb.setSize(500,400); mygb.setVisible(true); }}