问题描述
下面程序中addcomponent()函数参数数表中第四个和第五参数是指定组件的坐标吧,但在生成的窗口中把相应的组件与那俩个坐标比了一下,很迷惑,感觉组建的位置与那辆个坐标值不一样。。。(别用帮助文档中的解释,我刚才看了一下不好懂(恕我愚钝))谢谢packagehello;importjava.awt.*;importjavax.swing.*;publicclasstestextendsJFrame{JButtonbntsz,bntdl;JLabellblzc,lblzh,lbltest;JTextFieldtxtzh;JPasswordFieldpwdmm;JCheckBoxckbjm,ckbdl;JPanelpnlmain;GridBagLayoutgbl;GridBagConstraintsgbc;publictest(){super("QQ2011");pnlmain=newJPanel();this.getContentPane().add(pnlmain);gbl=newGridBagLayout();gbc=newGridBagConstraints();pnlmain.setLayout(gbl);bntsz=newJButton("设置");bntdl=newJButton("安全登录");lbltest=newJLabel("测试");lblzc=newJLabel("注册");lblzh=newJLabel("找回");txtzh=newJTextField(20);pwdmm=newJPasswordField(20);ckbjm=newJCheckBox("记住密码");ckbdl=newJCheckBox("自动登录");pnlmain.add(txtzh);pnlmain.add(pwdmm);pnlmain.add(lblzc);pnlmain.add(lblzh);pnlmain.add(bntsz);gbc.weightx=0;gbc.weighty=0;gbc.fill=GridBagConstraints.BOTH;addcomponent(txtzh,gbl,gbc,0,0,1,3);gbc.fill=GridBagConstraints.HORIZONTAL;addcomponent(pwdmm,gbl,gbc,0,1,2,1);addcomponent(bntsz,gbl,gbc,2,1,2,1);gbc.weightx=1000;gbc.weighty=1;gbc.fill=GridBagConstraints.BOTH;addcomponent(bntdl,gbl,gbc,1,1,1,1);gbc.weightx=0;gbc.weighty=0;gbc.fill=GridBagConstraints.BOTH;addcomponent(lblzc,gbl,gbc,1,2,1,1);addcomponent(lblzh,gbl,gbc,3,0,2,1);setSize(300,200);setVisible(true);setResizable(true);}//////添加组件的方法privatevoidaddcomponent(Componentc,GridBagLayoutg,GridBagConstraintsgc,introw,intcolumn,intwidth,intheight){gc.gridx=column;gc.gridy=row;gc.gridwidth=width;gc.gridheight=height;g.setConstraints(c,gc);pnlmain.add(c);}publicstaticvoidmain(String[]args){newtest();}}
解决方案
解决方案二:
引用楼主a_study的回复:
pnlmain.add(txtzh);pnlmain.add(pwdmm);pnlmain.add(lblzc);pnlmain.add(lblzh);pnlmain.add(bntsz);
这几行代码不需要的吧,控件没必要add两次。