2013-04-22 14 views
5

Potrzebuję zbudować GUI używając GroupLayout (nie innych układów). GUI będzie wyglądać następująco:Budowanie GUI za pomocą GroupLayout w Javie

---------------------------- 
| field 1 field 2 field 3 | 

| FFIEEELLLDD4 FIELDDDDDD5 | 

| FIEEEEEEEEEEEEEEELDDDD 6 | 
_____________________________ 

Pola 1 - 3 wziąć 1, każda o długości, pola 4 i 5, każda o długości 1,5 się, a pole 6 wykonuje 3 długości. Te trzy grupy są wyrównane zarówno na początku, jak i na końcu.

Odnosiłem się do tego http://docs.oracle.com/javase/tutorial/uiswing/layout/group.html.

Dla uproszczenia użyję JLabels jako uchwytów dla pól.

Oto mój kod do tej pory i nie mam szczęścia, aby uzyskać GUI, którego potrzebowałem.

public class RecorderGUI extends JFrame { 
    private final JLabel one; 
    private final JLabel two; 
    private final JLabel three; 
    private final JLabel four; 
    private final JLabel five; 
    private final JLabel six; 
public RecorderGUI() { 
    JFrame frame = new JFrame(); 
    JPanel panel = new JPanel(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    GroupLayout layout = new GroupLayout(panel); 
    panel.setLayout(layout); 

    one = new JLabel("one"); 
    two = new JLabel("two"); 
    three = new JLabel("three"); 
    four = new JLabel("four"); 
    five = new JLabel("five"); 
    six = new JLabel("six"); 
     layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) 
      .addGroup(layout.createSequentialGroup()) 
       .addComponent(one) 
       .addComponent(two) 
       .addComponent(three) 
      .addGroup(layout.createSequentialGroup()) 
       .addComponent(four) 
       .addComponent(five)) 
      .addComponent(six)); 

     layout.setVerticalGroup(layout.createSequentialGroup() 
      .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
       .addComponent(one) 
       .addComponent(two) 
      .addComponent(three)) 
     .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
      .addComponent(four) 
      .addComponent(five)) 
      .addComponent(six)); 
     frame.add(panel); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
    public static void main(final String[] args) { 
     RecorderGUI GUI = new RecorderGUI(); 
    } 

Kod jest w wyniku czynności, która nie jest to, co chciałem: jeden, dwa i trzy są połączone ze sobą; cztery i pięć pokrywają się również.

Niestety, chciałbym dodać zdjęcie GUI wyjściowej, ale nie mogę dołączyć zdjęcia bo mam poniżej 10 reputacji :(

+0

jeden, dwa i trzy są połączone ze sobą;. cztery i pięć pokrywają również – newtothissite

+0

i dlaczego ograniczenie do 'GroupLayout' – Howard

Odpowiedz

10

Poprawiono kilka nawiasów i dodał rozmiaru podpowiedzi do komponentów.

layout.setHorizontalGroup(layout 
    .createParallelGroup(GroupLayout.Alignment.LEADING) 
    .addGroup(layout.createSequentialGroup() 
     .addComponent(one, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addComponent(two, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addComponent(three, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    .addGroup(layout.createSequentialGroup() 
     .addComponent(four, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addComponent(five, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    .addComponent(six, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); 

layout.setVerticalGroup(layout.createSequentialGroup() 
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
     .addComponent(one).addComponent(two).addComponent(three)) 
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE) 
     .addComponent(four).addComponent(five)) 
    .addComponent(six)); 

enter image description here

+0

@Howard [Proszę wiesz prawdziwy problem w tym wątku] (? http: // s tackoverflow.com/questions/16147957/jtable-adding-one-to-a-jpanel-and-it-not-displaying-self), proszę, co spowodowało, że PreferredSize zniknęła (zwraca zero wymiaru) – mKorbel

Powiązane problemy