2013-07-08 14 views
5

Próbuję rozmieścić komponenty i chcę ustawić szerokość w określony sposób. Z tego co rozumiem, program ustawia liczbę "szer. Min: pref: max". Więc w moim przypadku chcę następujące:Szerokość ustawienia z miglayout

layout explained

Mój problem jest z Comp2. Przestaje rosnąć po około 200px i nie mogę zrozumieć dlaczego, ponieważ nie określam maksymalnej szerokości.

Sprawdziłem również wersję demonstracyjną miglayout, ale nie mam tam dokładnego przykładu. Mają jedno o nieograniczonej szerokości, ale nie o określonej minimalnej szerokości.

Aby upewnić się, że panel się rozszerza, ustawiam tło panelu na szare i widzę, że rozszerza się bez problemu.

Proszę mi powiedzieć, czy coś trzeba wyjaśnić, a ja z chęcią postaram się wyjaśnić lepiej.

EDIT: Tutaj jest SSCCE

import java.awt.Color; 
import javax.swing.*; 
import net.miginfocom.swing.MigLayout; 

public class SSCCE { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     JPanel panel = new JPanel(new MigLayout(
       "", 
       "[grow, fill]", 
       "")); 
     panel.setBackground(Color.LIGHT_GRAY); 

     JButton comp1 = new JButton("Comp1"); 
     JButton comp2 = new JButton("Comp2"); 
     JButton comp3 = new JButton("Comp3"); 

     panel.add(comp1, "width 50:150:150, growx"); 
     panel.add(comp2, "growx"); 
     panel.add(comp3, "width 50:70:70, growx");  

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

ja nie rosną, ale chcę go do podjęcia wszelkich dostępną przestrzeń, a tak nie jest. Czy może to mieć coś wspólnego z ustawieniami na panelu?

EDIT 2: Za pomocą tego kodu:

panel.add(comp1, "width 50:150:150"); 
panel.add(comp2, "width 10:n:n"); 
panel.add(comp3, "width 50:70:70, right"); 

uzyskać to:

enter image description here

ale chcę środkowy komponent zajmują całą dostępną przestrzeń.

+0

_stops rosnące po około 200px_ nie można odtworzyć: wszystko rośnie (w końcu są o równie wielkości) Najlepszy pokazać SSCCE że demonstruje zachowanie – kleopatra

+0

Mam teraz dodał SSCCE. Każda pomoc jest doceniana. :) – Goatcat

+0

nie do końca rozumiem, dlaczego wszystkie kolumny rosną, jeśli chcesz, aby tylko jeden z nich zajmował całą nadmiar przestrzeni. – kleopatra

Odpowiedz

6

Uczucie darmo :-)

Oto fragment, który daje wszystko dodatkową przestrzeń do środkowej kolumnie.

JPanel panel = new JPanel(new MigLayout(
     "debug", 
     "[][grow, fill][]", 
     "")); 
JButton comp1 = new JButton("Comp1"); 
JButton comp2 = new JButton("Comp2"); 
JButton comp3 = new JButton("Comp3"); 

panel.add(comp1, "width 50:150:150"); 
panel.add(comp2); 
panel.add(comp3, "width 50:70:70");  
+0

Wham bam, problem rozwiązany. Uprzejmie panu dziękuję! : D – Goatcat

+3

cieszę się, że mogę pomóc, miła pani :-) – kleopatra

Powiązane problemy