2012-04-15 78 views
0
import java.awt.*; 
import java.awt.event.*; 
import java.util.*; 
import javax.swing.*; 

public class GridBagLayoutDemo extends JFrame 
{ 
private JFrame frame; 
private JPanel panel; 
private JLabel l1,l2,l3,l4,l5,l6,l7,l8; 
private JRadioButton r1,r2,r3,r4,r5,r6,r7,r8; 
private JTextField t1,t2,t3,t4; 
private JComboBox c1; 
GridBagConstraints gbc; 
GridBagLayout gbl; 


public static void main(String[] args) 
{ 
    new GridBagLayoutDemo(); 
} 

public GridBagLayoutDemo() 
{ 
    frame=new JFrame(); 
    panel=new JPanel(); 
    panel.setBackground(Color.YELLOW); 
    gbl = new GridBagLayout(); 

    gbc = new GridBagConstraints(); 

    panel.setLayout(gbl); 

    l1=new JLabel("passport"); 
    gbc.anchor = gbc.EAST; 
    gbc.gridx=0; 
    gbc.gridy=0; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    //gbc.weightx=1.0; 
    panel.add(l1,gbc); 

    l2=new JLabel("pass no."); 
    gbc.gridx=0; 
    gbc.gridy=1; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(l2,gbc); 


    l3=new JLabel("Valid Upto"); 
    gbc.gridx=0; 
    gbc.gridy=2; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(l3,gbc); 

    l4=new JLabel("Identification"); 
    gbc.gridx=0; 
    gbc.gridy=3; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(l4,gbc); 

    l5=new JLabel("NO."); 
    gbc.gridx=0; 
    gbc.gridy=4; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(l5,gbc); 

    l6=new JLabel("Marital Status"); 
    gbc.gridx=0; 
    gbc.gridy=5; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(l6,gbc); 

    l7=new JLabel("Nationality"); 
    gbc.gridx=0; 
    gbc.gridy=6; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(l7,gbc); 

    l8=new JLabel("Type of Position"); 
    gbc.gridx=0; 
    gbc.gridy=7; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(l8,gbc); 

    r1=new JRadioButton("Yes"); 
    gbc.gridx=2; 
    gbc.gridy=0; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(r1,gbc); 

    r2=new JRadioButton("No"); 
    gbc.gridx=4; 
    gbc.gridy=0; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(r2,gbc); 

    r3=new JRadioButton("Married"); 
    gbc.gridx=2; 
    gbc.gridy=5; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(r3,gbc); 

    r4=new JRadioButton("Unmarried"); 
    gbc.gridx=4; 
    gbc.gridy=5; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(r4,gbc); 

    r5=new JRadioButton("Full time"); 
    gbc.gridx=2; 
    gbc.gridy=7; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(r5,gbc); 

    r6=new JRadioButton("Part Time"); 
    gbc.gridx=3; 
    gbc.gridy=7; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(r6,gbc); 

    r7=new JRadioButton("Contract Basis"); 
    gbc.gridx=4; 
    gbc.gridy=7; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(r7,gbc); 

    r8=new JRadioButton("Intern"); 
    gbc.gridx=2; 
    gbc.gridy=8; 
    gbc.gridwidth=1; 
    gbc.gridheight=1; 
    panel.add(r8,gbc); 


    t1=new JTextField(); 
    gbc.gridx=2; 
    gbc.gridy=1; 
    gbc.gridwidth=3; 
    gbc.gridheight=1; 
    panel.add(t1,gbc); 

    t2=new JTextField(); 
    gbc.gridx=2; 
    gbc.gridy=2; 
    gbc.gridwidth=3; 
    gbc.gridheight=1; 
    panel.add(t2,gbc); 

    t3=new JTextField(); 
    gbc.gridx=2; 
    gbc.gridy=4; 
    gbc.gridwidth=3; 
    gbc.gridheight=1; 
    panel.add(t3,gbc); 

    t4=new JTextField(); 
    gbc.gridx=2; 
    gbc.gridy=6; 
    gbc.gridwidth=3; 
    gbc.gridheight=1; 
    panel.add(t4,gbc); 





    frame.add(panel); 

    frame.setVisible(true); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    //frame.setSize(300,200); 
    frame.pack(); 

    //c1=new JComboBox(); 
    //frame1(); 


} 
} 

在此我加了幾個標籤,單選按鈕,textfields.The單選按鈕和標籤越來越顯示我想他們,但文本字段沒有得到正確顯示。 誰能告訴我如何讓文本字段覆蓋更多的空間?佈局組件未如預期

This is how the gui is displayed

+0

這個GUI是非常適合'GroupLayout'。順便說一句 - 請裁剪圖像的白色空間! – 2012-04-15 15:55:56

回答

2

你或許應該考慮在文本框上的限制設置以下兩個值:

GridBagConstraints.fill = GridBagConstraints.HORIZONTAL; 
GridBagConstraints.weightx = 1.0;// If there is extra room horizontally, the textfields will receive it 
+0

解決了這個問題。謝謝。 – 2012-04-15 16:50:42

2

由於您的JTextField中沒有自己的列大小的屬性設置,他們的首選大小將是相當小的。考慮給你的JTextField的默認列大小:

public class GridBagLayoutDemo extends JFrame { 
    private static final int TF_COLS = 10; 

    // .... 

    public GridBagLayoutDemo() { 
     t1 = new JTextField(TF_COLS); 
     t2 = new JTextField(TF_COLS); 
     t3 = new JTextField(TF_COLS); 
     t4 = new JTextField(TF_COLS); 
     // .... 
+0

謝謝!問題解決了... – 2012-04-15 16:43:44