Hola a todos, estoy haciendo la interfaz gráfica de una aplicación, pero he tenido muchos problemas con los paneles y sus layouts.
Por ejemplo, en un panel principal (que tiene FlowLayout por defecto) inserto otro panel con un GridLayout(2, 4) para tener 2 filas y 4 columnas.
Luego en dicho panel nuevo intento insertar un JLabel y 3 JRadioButtons por fila, de forma que quede algo así:
----------------------------------------------------------------|
JLabel1 | JRadioButton1 | JRadioButton2 | JRadioButton3 |
----------------------------------------------------------------|
JLabel2 | JRadioButton4 | JRadioButton5 | JRadioButton6 |
----------------------------------------------------------------|
Pero la cosa es que siempre quedan todos juntos en una fila:
----------------------------------------------------------------------------------------------------------------------------------|
JLabel1 | JRadioButton1 | JRadioButton2 | JRadioButton3 | JLabel2 | JRadioButton4 | JRadioButton5 | JRadioButton6 |
----------------------------------------------------------------------------------------------------------------------------------|
También intenté insertar dentro del panel principal (que tiene FlowLayout) un panel con GridLayout(2,1) [2 filas, 1 columna] y en cada una de las dos filas de ese panel, insertar paneles con GridLayout(1,4), dentro de los cuales pongo el JLabel y los 3 JRadioButtons, pero el asunto sigue igual, mostrándome TODO en una sola fila.
Aquí les dejo mi código, que hace referencia a este último diseño, con el panel de GridLayout(2,1). Estoy omitiendo a propósito los `import' y el método `main()'
Código Java:
Ver originalpublic class App
extends JFrame {
private JPanel panPosition, panDesign, panConf, panText
;
public App()
{
positionPanels();
panelTab.addTab("Position", panPosition);
panelTab.
setMnemonicAt(0,
KeyEvent.
VK_1);
panelTab.addTab("Design", panDesign);
panelTab.
setMnemonicAt(1,
KeyEvent.
VK_2);
panelTab.addTab("Configurations", panConf);
panelTab.
setMnemonicAt(2,
KeyEvent.
VK_3);
panelTab.addTab("Text", panText);
panelTab.
setMnemonicAt(3,
KeyEvent.
VK_4);
add(panelTab);
setSize(540, 580);
//pack();
setVisible(true);
//setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation
(JFrame.
EXIT_ON_CLOSE); }
private void positionPanels()
{
panPosition
= new JPanel(); // FlowLayout() by default
//panPos1.setPreferredSize(new Dimension(510, 50));
panPos1.
setBorder(BorderFactory.
createTitledBorder("Alignment"));
////////////////////////////////////
/* Panel de opciones 'Vertical' */
////////////////////////////////////
panelVert.add(posVertical);
rbTop.setActionCommand("top");
rbMidV.setActionCommand("middle");
rbBottom.setActionCommand("bottom");
// Group radio buttons
rbgAlignment1.add(rbTop);
rbgAlignment1.add(rbMidV);
rbgAlignment1.add(rbBottom);
// Add radio buttons to panel
panelVert.add(rbTop);
panelVert.add(rbMidV);
panelVert.add(rbBottom);
////////////////////////////////////
/* Panel de opciones 'Horizontal' */
////////////////////////////////////
panelVert.add(posHorizontal);
rbTop.setActionCommand("_left");
rbMidV.setActionCommand("_middle");
rbBottom.setActionCommand("_right");
// Group radio buttons
rbgAlignment2.add(rbLeft);
rbgAlignment2.add(rbMidH);
rbgAlignment2.add(rbRight);
// Add radio buttons to panel
panelVert.add(rbLeft);
panelVert.add(rbMidH);
panelVert.add(rbRight);
panPos1.add(panelVert);
panPos1.add(panelHor);
panPosition.add(panPos1);
}
Aquí les dejo unas imágenes:
Aplicación:
http://img155.imageshack.us/img155/6149/pantallazo1vf.png
Aplicación con preferredSize:
http://img856.imageshack.us/img856/7311/pantallazopw.png