Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con Layouts

Estas en el tema de Problemas con Layouts en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 22/04/2011, 12:07
 
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
  #2 (permalink)  
Antiguo 22/04/2011, 12:28
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Problemas con Layouts

Que tonto! Al hacer copy&paste de el segundo panel de GridLayout(1,4) olvidé cambiar el nombre del panel al que se agregan los objetos. Por tanto, ya quedó, pero sigo sin explicarme por qué el primer diseño no funcionaba. Intentaré hacer el primer diseño de nuevo, porque con el segundo me parece que estoy creando demasiados paneles.

Etiquetas: gridlayout, layouts
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:25.