2009-10-16 7 views
5

J'ai un composant qui est composé de divers composants tels qu'une case à cocher un curseur et quelques boutons. Je veux ajouter ceci à un scrollpane et faire croître le curseur pour remplir tout l'espace restant. C'est pas un problème car ce code démontre:Comment forcer un composant à se développer dans MigLayout en Java

public static void main(String[] args) { 
    JFrame f = new JFrame("Test"); 
    JPanel c = new JPanel(new MigLayout(
      "",   
      "[]5[]10[grow]10[]0[]0[]0[]", 
      "[]" 
    )); 
    c.add(new JCheckBox("")); 
    c.add(new JLabel("Name")); 
    c.add(new JSlider()); 
    c.add(new JButton("1")); 
    c.add(new JButton("2")); 
    c.add(new JButton("3")); 
    c.add(new JButton("4")); 
    f.getContentPane().add(new JScrollPane(c)); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.pack(); 
    f.setVisible(true); 
} 

Si vous exécutez ceci et redimensionner le cadre, le curseur remplit tout l'espace. Mon problème réside dans le fait que je veux ajouter mon composant (celui avec le curseur) dans un autre composant qui contient différentes instances de celui-ci. Donc, par exemple, il contiendra 3 ou 4 composants avec des curseurs un en dessous de l'autre. Je pensais que cela fonctionnerait:

public static void main(String[] args) { 
    JFrame f = new JFrame("Test"); 
    JPanel c = new JPanel(new MigLayout(
      "",   
      "[]5[]10[grow]10[]0[]0[]0[]", 
      "[]" 
    )); 
    c.add(new JCheckBox("")); 
    c.add(new JLabel("Name")); 
    c.add(new JSlider()); 
    c.add(new JButton("1")); 
    c.add(new JButton("2")); 
    c.add(new JButton("3")); 
    c.add(new JButton("4")); 
    JPanel a = new JPanel(new MigLayout("wrap 1")); 
    a.add(c); 
    f.getContentPane().add(new JScrollPane(a)); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.pack(); 
    f.setVisible(true); 
} 

Mais ce n'est pas le cas. Des pensées sur pourquoi et comment le réparer?

+0

Quand je coupé et collé ce code, le curseur ne _not_ croître. J'ai dû ajouter une contrainte '' "growx" '. – CarlG

+0

C'est bizarre ... Quelle version mig utilisez-vous et quelle version java? (aussi quel OS?) –

Répondre

8

Essayez de changer la déclaration JPanel a à:

JPanel a = new JPanel(new MigLayout("wrap 1", "[grow,fill]")); 
+0

Aha! Merci ... J'ai besoin du paramètre "fill" sur les deux mises en page mig mais ça marche. :) –

Questions connexes