2010-01-12 21 views
7

Pytanie do tych znanego z MigLayoutMigLayout Wykorzystanie

przykro nie mógł myśleć o bardziej odpowiednią nazwą dla pytanie ...

staram się stworzyć układ, który zakończy się wygląda jak następuje:

+---------+---------+ 
| btn1 | btn2 | 
+---------+---------+ 
|     | 
|  btn3  | 
|     | 
+-------------------+ 

gdy okno jest zmieniany komponenty btn1 i btn2 powinien wypełnić oś x (połowa każdego) i komponent btn3 należy wypełnić zarówno oś x oraz całej dostępnej przestrzeni ja n na osi y.

Jak to osiągnąć?

tu jakiś kod na początek:

public static void main(String[] args) 
{ 
    JFrame window = new JFrame(); 
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    Container cp = window.getContentPane(); 

    cp.setLayout(new MigLayout("")); 
    cp.add(new JButton("btn1"), ""); 
    cp.add(new JButton("btn2"), ""); 
    cp.add(new JButton("btn3"), ""); 

    window.pack(); 
    window.setVisible(true); 
} 
+0

Jeśli nie znasz się na MigLayout, przetestuj swój kod przed odpowiedzią. (czy to jest lepszy joachim?) – pstanton

Odpowiedz

26

Jest to dość łatwe w MigLayout:

setLayout(new MigLayout("fill")); 

add(new JButton("button 1"), "w 50%"); 
add(new JButton("button 2"), "w 50%, wrap"); 
add(new JButton("button 3"), "grow, push, span"); 

Jeżeli odczytuje Państwo oryginalne pytanie pstanton jest, myślę, że wymagane instrukcje dotyczące układu są bardzo zbliżone do tego, jak je sformułował. Właśnie to lubię w MigLayout :)

+0

dziękuję! ktoś, kto rozumie pytanie !! – pstanton

+0

Bardzo sprytny - nie wiedział o w 50% wcześniej. Dzięki. – I82Much

2

nigdy nie używałem miglayout, ale powinno to być coś podobnego do poniższego:

... 
cp.add(new JButton("btn1")); 
cp.add(new JButton("btn2"), "wrap"); 
cp.add(new JButton("btn3"), "span"); 
... 
+0

Nie wiem, dlaczego zostało to odrzucone, ale wygląda na prawidłowe podejście. Przeglądając dokumentację, musisz dodać to również do konstruktora: new MigLayout ("", "[grow] [grow]", ""); –

+0

cofnięte, ponieważ nie odpowiada na pytanie. po co przegłosować, jeśli nie przetestowałeś odpowiedzi i nie wiesz, że to działa ?! – pstanton

+0

pielgrzym, nawet z twoją sugestią btn1 i btn2 nie skalują się poziomo a btn3 nie skaluje się poziomo ani pionowo. – pstanton

-1

Więc chcesz coś takiego:

example image http://img22.imageshack.us/img22/9479/capturadepantalla201001g.png

bardzo Swing Layout Demo ma ją pod „kierunek przepływu”

Oto kod z tej próbki:

JTabbedPane tabbedPane = new JTabbedPane(); 

tabbedPane.addTab("Layout: flowx, Cell: flowx", createFlowPanel("", "flowx")); 
tabbedPane.addTab("Layout: flowx, Cell: flowy", createFlowPanel("", "flowy")); 
tabbedPane.addTab("Layout: flowy, Cell: flowx", createFlowPanel("flowy", "flowx")); 
tabbedPane.addTab("Layout: flowy, Cell: flowy", createFlowPanel("flowy", "flowy")); 

public JPanel createFlowPanel(String gridFlow, String cellFlow) { 
    MigLayout lm = new MigLayout("center, wrap 3," + gridFlow, 
           "[110,fill]", 
           "[110,fill]"); 

    JPanel panel = createTabPanel(lm); 

    for (int i = 0; i < 9; i++) { 
     JButton b = createButton("" + (i + 1)); 
     b.setFont(b.getFont().deriveFont(20f)); 
     panel.add(b, cellFlow); 
    } 

    JButton b = createButton("5:2"); 
    b.setFont(b.getFont().deriveFont(20f)); 
    panel.add(b, cellFlow + ",cell 1 1"); 

    return panel; 
} 
+0

Och, nie mogę jeszcze publikować zdjęć, po prostu usuń to miejsce w odnośniku, aby je zobaczyć. – OscarRyz

+0

Tak, nadal nie o tym mówię, a kod, który wysłałeś, jest niekompletny i nie demonstruje o co pytam. – pstanton