2010-01-12 8 views
7

Une question pour les familiers avecMigLayoututilisation MigLayout

désolé ne pouvait pas penser à un nom plus approprié pour la question ...

Je suis en train de créer une mise en page qui finira la recherche comme suit:

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

lorsque la fenêtre est redimensionnée les composants btn1 et BTN2 doit remplir l'axe x (la moitié de chacun), et le composant btn3 doit remplir à la fois l'axe x et l'ensemble de l'espace disponible je n l'axe des y.

Comment voulez-vous y parvenir?

est un code ici pour commencer:

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

Si vous n'êtes pas familier avec MigLayout, veuillez tester votre code avant de répondre. (est ce meilleur joachim?) – pstanton

Répondre

26

C'est assez facile à 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"); 

Si vous lisez la question initiale de pstanton, je pense que le instructions de mise en page requises sont très proches de la façon dont il l'a formulé. C'est ce que j'aime dans MigLayout :)

+0

vous remercie! Quelqu'un qui comprend la question !! – pstanton

+0

Très intelligent - ne savait pas sur le w 50% avant. Merci. – I82Much

2

Je ne l'ai jamais utilisé miglayout, mais il devrait être quelque chose comme ce qui suit:

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

Je ne sais pas pourquoi cela a été downvoted mais il semble être une approche correcte. En regardant la documentation, vous devez également ajouter ceci au constructeur: new MigLayout ("", "[grow] [grow]", ""); –

+0

downvoted parce qu'il ne répond pas à la question. pourquoi upvote si vous n'avez pas testé la réponse et ne savent pas que cela fonctionne ?! – pstanton

+0

pèlerin, même avec votre suggestion btn1 & btn2 ne pas redimensionner horizontalement et btn3 ne se redimensionne pas horizontalement ou verticalement. – pstanton

-1

Alors voulez-vous quelque chose comme ceci:

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

Le très Swing Layout Demo l'a, sous la rubrique "Sens d'écoulement"

est ici le code de cet échantillon:

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

Oh, je ne peux pas encore publier d'images, il suffit de supprimer cet espace dans la référence pour le voir. – OscarRyz

+0

ouais toujours pas de quoi je parle, plus le code que vous avez posté est incomplet et ne montre pas ce que je demande. – pstanton

Questions connexes