Java 网格布局不工作
我有一些代码可以产生这样的结果: 我希望3、4和5个jtext字段在旁边 jlabel,如1和2中所示。 我的代码试图这样做,但上面的图片就是结果 有人能指出我代码中的问题吗Java 网格布局不工作,java,swing,gridbaglayout,Java,Swing,Gridbaglayout,我有一些代码可以产生这样的结果: 我希望3、4和5个jtext字段在旁边 jlabel,如1和2中所示。 我的代码试图这样做,但上面的图片就是结果 有人能指出我代码中的问题吗 import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JTextField; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; publi
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
public class example{
public static void main(String[] args){
JDialog jd = new JDialog();
jd.setTitle("Example");
GridBagLayout gl = new GridBagLayout();
final JTextField j1 = new JTextField("1");
final JTextField j2 = new JTextField("2");
final JTextField j3 = new JTextField("3");
final JTextField j4 = new JTextField("4");
final JTextField j5 = new JTextField("5");
jd.setLayout(gl);
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.weightx = 1.0;
c.weighty = 1.0;
c.gridx = 0;
c.gridy = 0;
jd.add(new JLabel("TextField 1: "), c);
c.gridx = 1;
jd.add(j1,c);
c.gridx = 0;
c.gridy++;
jd.add(new JLabel("TextField 2: "), c);
c.gridx = 1;
c.gridy=1;
jd.add(j2,c);
c.gridx = 0;
c.gridy++;
jd.add(new JLabel("TextField 3: "), c);
c.gridx = 1;
jd.add(j3);
c.gridx = 0;
c.gridy++;
jd.add(new JLabel("TextField 4: "), c);
c.gridx = 1;
jd.add(j4);
c.gridx = 0;
c.gridy++;
jd.add(new JLabel("TextField 5: "), c);
c.gridx = 1;
jd.add(j5);
jd.pack();
jd.setVisible(true);
}
}
在一些add(…)
方法调用中没有使用GridBagConstraints。如果您不告诉GridBagLayout如何放置组件,GridBagLayout将无法工作,解决方案正如您所期望的,在使用容器将组件添加到GBL时使用约束对象
jd.add(j3); // **** here
c.gridx = 0;
c.gridy++;
jd.add(new JLabel("TextField 4: "), c);
c.gridx = 1;
jd.add(j4); // **** here
c.gridx = 0;
c.gridy++;
jd.add(new JLabel("TextField 5: "), c);
c.gridx = 1;
jd.add(j5); // **** here