Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/04/2011, 12:07
DavidReza
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Problemas con Layouts

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 original
  1. public class App extends JFrame
  2. {
  3.     private JTabbedPane panelTab;
  4.     private JPanel panPosition, panDesign, panConf, panText;
  5.  
  6.  
  7.     public App()
  8.     {      
  9.         panelTab = new JTabbedPane();
  10.  
  11.         positionPanels();
  12.        
  13.         panelTab.addTab("Position", panPosition);
  14.         panelTab.setMnemonicAt(0, KeyEvent.VK_1);
  15.        
  16.         panelTab.addTab("Design", panDesign);
  17.         panelTab.setMnemonicAt(1, KeyEvent.VK_2);
  18.        
  19.         panelTab.addTab("Configurations", panConf);
  20.         panelTab.setMnemonicAt(2, KeyEvent.VK_3);
  21.  
  22.         panelTab.addTab("Text", panText);
  23.         panelTab.setMnemonicAt(3, KeyEvent.VK_4);
  24.  
  25.        
  26.         add(panelTab);
  27.                 setSize(540, 580);
  28.                 //pack();
  29.                 setVisible(true);
  30.                 //setResizable(false);
  31.                 setLocationRelativeTo(null);
  32.                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  33.     }
  34.  
  35.     private void positionPanels()
  36.     {
  37.         panPosition = new JPanel();                                         // FlowLayout() by default
  38.        
  39.             JPanel panPos1 = new JPanel(new GridLayout(2, 1));
  40.             //panPos1.setPreferredSize(new Dimension(510, 50));    
  41.             panPos1.setBorder(BorderFactory.createTitledBorder("Alignment"));
  42.  
  43.             ////////////////////////////////////
  44.             /*  Panel de opciones 'Vertical'  */
  45.             ////////////////////////////////////
  46.                
  47.                 JPanel panelVert = new JPanel(new GridLayout(1, 4));
  48.  
  49.                 JLabel posVertical = new JLabel("Vertical:");
  50.                 panelVert.add(posVertical);
  51.                
  52.                 JRadioButton rbTop      = new JRadioButton("Top", true);
  53.                 JRadioButton rbMidV     = new JRadioButton("Middle");
  54.                 JRadioButton rbBottom   = new JRadioButton("Bottom");
  55.  
  56.                 rbTop.setActionCommand("top");
  57.                 rbMidV.setActionCommand("middle");
  58.                 rbBottom.setActionCommand("bottom");
  59.  
  60.                 // Group radio buttons
  61.                 ButtonGroup rbgAlignment1 = new ButtonGroup();
  62.                 rbgAlignment1.add(rbTop);
  63.                 rbgAlignment1.add(rbMidV);
  64.                 rbgAlignment1.add(rbBottom);
  65.  
  66.                 // Add radio buttons to panel
  67.                 panelVert.add(rbTop);
  68.                 panelVert.add(rbMidV);
  69.                 panelVert.add(rbBottom);
  70.  
  71.             ////////////////////////////////////
  72.             /* Panel de opciones 'Horizontal' */
  73.             ////////////////////////////////////
  74.                
  75.                 JPanel panelHor = new JPanel(new GridLayout(1, 4));
  76.  
  77.                 JLabel posHorizontal = new JLabel("Horizontal:");
  78.                 panelVert.add(posHorizontal);
  79.                
  80.                 JRadioButton rbLeft = new JRadioButton("Left", true);
  81.                 JRadioButton rbMidH     = new JRadioButton("Middle");
  82.                 JRadioButton rbRight    = new JRadioButton("Right");
  83.  
  84.                 rbTop.setActionCommand("_left");
  85.                 rbMidV.setActionCommand("_middle");
  86.                 rbBottom.setActionCommand("_right");
  87.  
  88.                 // Group radio buttons
  89.                 ButtonGroup rbgAlignment2 = new ButtonGroup();
  90.                 rbgAlignment2.add(rbLeft);
  91.                 rbgAlignment2.add(rbMidH);
  92.                 rbgAlignment2.add(rbRight);
  93.  
  94.                 // Add radio buttons to panel
  95.                 panelVert.add(rbLeft);
  96.                 panelVert.add(rbMidH);
  97.                 panelVert.add(rbRight);
  98.  
  99.             panPos1.add(panelVert);        
  100.             panPos1.add(panelHor); 
  101.  
  102.         panPosition.add(panPos1);
  103.     }

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

Última edición por DavidReza; 22/04/2011 a las 12:21