2013-08-20 40 views
3

我有一些代码,生成此:GridBagLayout中不工作

example thing

,我想了3,4,5个JTextField的是旁边 中的JLabel,在1和2 我的代码是这样做的尝试,但上面的图像是结果。

任何人都可以指出我的代码中的问题?

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); 
     } 
} 

回答

3
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 

你不使用你的几个方法add(...)调用的GridBagConstraints的。如果您不告诉它如何放置组件,并且解决方案如您所期望的那样,在将组件添加到使用GBL的容器时使用约束对象,则GridBagLayout将不起作用。