2013-04-22 19 views
5

GroupLayout kullanarak başka bir GUI oluşturmam gerekiyor (diğer düzenlerde değil). GUI, aşağıdaki gibi olacaktır:Java'da GroupLayout kullanarak GUI oluşturma

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

| FFIEEELLLDD4 FIELDDDDDD5 | 

| FIEEEEEEEEEEEEEEELDDDD 6 | 
_____________________________ 

Sahası 1-3 almak 1 uzunluğu, her biri alan 4 ve 5, 1.5 uzunluğu her alır ve alan 6 3 uzunluğu alır. Üç grup hem başlangıçta hem de sonunda hizalanır.

Bu http://docs.oracle.com/javase/tutorial/uiswing/layout/group.html numaralı telefonu kullanıyorum.

Basitlik için, JLabels'i alanlar için yer tutucu olarak kullanacağım.

İşte kodum şu ana kadar ve istediğim GUI'yi elde etme şansım yok.

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 istediğim olmadığı, aşağıda sonuçlandığını: bir, iki ve üç araya getirilir; dört ve beş de örtüşüyor.

Üzgünüm, çıkış GUI resmini eklemek istiyorum ama 10 itibar :(altında sahip çünkü resim ekleyemezsiniz

+0

bir, iki ve üç araya karışmış; dört ve beş örtüşme yanı – newtothissite

+0

ve neden GroupLayout' – Howard

cevap

10

bazı parantez Sabit ve bileşenleri için ipuçları boyutlandırma eklendi.

.
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 [bu konuya gerçek sorunu biliyor musunuz lütfen] ('için kısıtlama? http: // s tackoverflow.com/questions/16147957/jtable-adding-one-to-a-jpanel-and-it-not-displaying-itself), PreferredSize'in kaybolmasına neden olan neyse lütfen (sıfır Boyut döndürür) – mKorbel