2013-04-22 15 views
5

È necessario creare una GUI utilizzando GroupLayout (non altri layout). L'interfaccia grafica sarà simile alla seguente:Creazione di GUI utilizzando GroupLayout in Java

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

| FFIEEELLLDD4 FIELDDDDDD5 | 

| FIEEEEEEEEEEEEEEELDDDD 6 | 
_____________________________ 

Campi 1 - 3 Prendete 1 lunghezza ciascuna, campo 4 e 5 prendono 1,5 di lunghezza ciascuno, e campo 6 prende 3 lunghezza. I tre gruppi sono allineati sia all'inizio che alla fine.

Mi riferivo a questo http://docs.oracle.com/javase/tutorial/uiswing/layout/group.html.

Per semplicità, userò JLabels come segnaposto per i campi.

Ecco il mio codice finora e non ho fortuna a ottenere la GUI che volevo.

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

Il codice è risultato i seguenti, che non è quello che volevo: uno, due e tre sono fusi insieme; anche le quattro e le cinque si sovrappongono.

dispiace, vorrei aggiungere una foto della GUI di uscita, ma non posso allegare immagini perché ho sotto 10 reputazione :(

+0

uno, due e tre sono fusi insieme,. quattro e cinque si sovrappongono così – newtothissite

+0

e perché la restrizione a 'GroupLayout' – Howard

risposta

10

Corretti alcuni parantheses e ha aggiunto il ridimensionamento suggerimenti per i componenti:.

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 [si prega sai vero problema in questa discussione] (? http: // s tackoverflow.com/questions/16147957/jtable-adding-one-to-a-jpanel-and-it-not-displaying-itself), per favore cosa ha causato che PreferredSize è andato via (restituisce zero Dimension) – mKorbel