2011-07-11 12 views
2

Итак, мне нужен макет, чтобы выглядеть следующим образом:Проблема с Java GridBagConstraints

{|Name|   |Info||Tag||Id|} 

Прямо сейчас это выглядит следующим образом:

{|Name| |Info| |Tag| |Id|} 

Более или менее. Вот мой код:

GridBagConstraints c; 

    c = new GridBagConstraints(0, 0, 5, 1, .5, .1, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0,0,0,0), 5, 5); 
    header.add(name, c); 
    c = new GridBagConstraints(10, 0, 1, 1, .5, .1, GridBagConstraints.EAST, GridBagConstraints.BOTH, new Insets(1,1,1,1), 5, 5); 
    header.add(id, c); 
    c = new GridBagConstraints(8, 0, 2, 1, .5, .1, GridBagConstraints.EAST, GridBagConstraints.BOTH, new Insets(1,1,1,1), 5, 5); 
    header.add(tag, c); 
    c = new GridBagConstraints(6, 0, 2, 1, .5, .1, GridBagConstraints.EAST, GridBagConstraints.BOTH, new Insets(1,1,1,1), 5, 5); 
    header.add(info, c); 

Как изменить это, чтобы получить желаемый результат?

ответ

6

Горизонтальный BoxLayout может быть проще. Ваш код будет что-то вроде:

header.add(name); 
header.add(Box.createHorizontalGlue()); 
header.add(info); 
... 

Пример

public class GridBagLayoutTest{ 

    public static void main(String[] args){ 
     SwingUtilities.invokeLater(new Runnable(){ 
      @Override 
      public void run(){ 
       createAndShowGUI();    
      } 
     }); 
    } 

    private static void createAndShowGUI(){ 
     final JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 

     final JPanel panel = new JPanel(){ 
      @Override 
      public Dimension getPreferredSize(){ 
       return new Dimension(200, 20); 
      } 
     }; 
     panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); 
     panel.add(new JLabel("|Name|")); 
     panel.add(Box.createHorizontalGlue()); 
     panel.add(new JLabel("|Info|")); 
     panel.add(new JLabel("|Tag|")); 
     panel.add(new JLabel("|Id|")); 

     frame.add(panel); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 
} 

ВЫВОД

enter image description here

+0

+1, мои мысли точно. – mre

+0

Если вы чувствуете, что приведенный мною пример неудовлетворителен, не стесняйтесь удалять редактирование. Я думал, что, возможно, это обогатит ваш уже правильный ответ. :) – mre

+0

Прямо, чувак. – MirroredFate

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