2013-08-20 4 views
3

У меня есть некоторый код, который производит этот:GridBagLayout не работает

example thing

Где я хочу, 3, 4, и 5 JTextFields быть рядом В JLabels, как в 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 

Вы не используете GridBagConstraints в нескольких ваших методах add(...) вызовов. GridBagLayout не будет работать, если вы не укажете, как разместить компоненты, и решение так же, как и следовало ожидать, использовать объект ограничений при добавлении компонента в контейнер с использованием GBL.

Смежные вопросы