2010-01-12 6 views
7

Una pregunta para los familiarizado conMigLayoutMigLayout uso

siento no podría pensar en un nombre más apropiado para la pregunta ...

Estoy intentando crear un diseño que va a terminar mirando como el siguiente:

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

cuando la ventana se cambia el tamaño de los componentes btn1 y btn2 debe llenar el eje x (medio cada uno), y el componente Btn3 debe llenar tanto el eje x y todo el espacio disponible yo n el eje y.

¿cómo lograrías esto?

aquí hay un código para empezar:

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 no está familiarizado con MigLayout, pruebe su código antes de responder. (¿es mejor joachim?) – pstanton

Respuesta

26

Esto es bastante fácil en 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 se lee la pregunta original de pstanton, creo que la las instrucciones de diseño requeridas están muy cerca de cómo lo formuló. Eso es lo que me gusta de MigLayout :)

+0

gracias! ¡alguien que entiende la pregunta! – pstanton

+0

Muy inteligente, no sabía nada sobre el w 50% anterior. Gracias. – I82Much

2

nunca he utilizado miglayout, pero debería ser algo como lo siguiente:

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

No sé por qué esto fue votado negativamente, pero parece un enfoque correcto. En cuanto a la documentación, también debe agregar esto al constructor: nuevo MigLayout ("", "[crecer] [crecer]", ""); –

+0

downvoted porque no responde la pregunta. ¿Por qué votar si no has probado la respuesta y no sabes que funciona? – pstanton

+0

peregrino, incluso con su sugerencia btn1 y btn2 no se escalan horizontalmente y btn3 no se escala horizontal o verticalmente. – pstanton

-1

hacerlo quieres algo como esto:

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

El muy Swing Layout Demo tiene, en "Dirección de flujo"

Aquí está el código de esa muestra:

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, no puedo publicar imágenes todavía, simplemente borre ese espacio en la referencia para verlo. – OscarRyz

+0

sí, aún no estoy hablando de eso, además el código que publicaste está incompleto y no demuestra lo que estoy pidiendo. – pstanton

Cuestiones relacionadas