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

GridBagLayout - Dudas

Estas en el tema de GridBagLayout - Dudas en el foro de Java en Foros del Web. Buenas a todos! Veran, estoy hace 1 dia intentando crear un formulario muy simple con tan solo 5 campos de texto y sus correspondientes Labels, ...
  #1 (permalink)  
Antiguo 21/06/2018, 05:35
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
GridBagLayout - Dudas

Buenas a todos!

Veran, estoy hace 1 dia intentando crear un formulario muy simple con tan solo 5 campos de texto y sus correspondientes Labels, pero me encuentro en un problema con el GridBagLayout

He visto un video en YouTube de como usarlos, pero la verdad es que no funciona como lo mustran.

Ejemplo:
Código Java:
Ver original
  1. // DENTRO DE MI CLASE QUE HEREDA DE JPanel //
  2.  
  3. this.setLayout(gbl);
  4.  
  5.  
  6. JLabel LB1 = new JLabel("Label 1");
  7. JLabel LB2 = new JLabel("Label 2");
  8. JLabel LB3 = new JLabel("Label 3");
  9. JLabel LB4 = new JLabel("Label 4");
  10. JLabel LB5 = new JLabel("Label 5");
  11. JTextField TEXT1 = new JTextField("TEXT 1");
  12. JTextField TEXT2 = new JTextField("TEXT 2");
  13. JTextField TEXT3 = new JTextField("TEXT 3");
  14. JTextField TEXT4 = new JTextField("TEXT 4");
  15. JTextField TEXT5 = new JTextField("TEXT 5");
  16.  
  17. // A OJO ESTA ES LA ESTRUCTURA QUE REQUIERO CONSEGUIR
  18. //
  19. // LABEL 1:  [__________]     LABEL 2:  [__________]
  20. //
  21. //
  22. // LABEL 3:  [__________]
  23. //
  24. //
  25. // LABEL 4:  [__________]
  26. //
  27. //
  28. //               LABEL 5:  [__________]
  29. //
  30. //
  31. //
  32. //                  [        BUTTON        ]
  33.  
  34. // AQUI "DIBUJO" LA PRIMER LINEA CON LOS LABELS 1 a 2 y TEXTS 1 a 2 (O ESO PRETENDO) //
  35.  
  36. gbc.gridx = 0;
  37. gbc.gridy = 0;
  38. this.add(LB1, gbc);
  39. gbc.gridx = 2;
  40. this.add(TEXT1, gbc);
  41. gbc.gridx = 6;
  42. this.add(LB2);
  43. gbc.gridx = 8;
  44. this.add(TEXT2);

Bien, ese es un pequeño ejemplo, la cosa es que en el video, la persona colocaba un elemento por ejemplo en la gbc.gridx = 0; y el campo de texto que debe ir al lado en el gbc.gridx = 2; y se creaba un espacio entre esos objetos.

En mi caso, eso no pasa, ni en X ni en Y, tampoco sirve el gbc.gridwidth o gbc.gridheight y ni hablar del gbc.fill

Ese espacio se respeta solo si coloco un elemento vacio que no se vea, o hago espacio dentro del objeto label new JLabel("LB1: ") de esa forma.

Pero para completar el palo, siquiera eso se puede hacer, porque al colocar 5 gbc.gridx los demas pierden su grid y los espacios desaparecen...

En conclusion, hace un dia entero que intento hacer un formulario sencillo y no encuentro la herramienta adecuada.

Segun el video eso deberia de funcionar asi, pero no lo hace.

La pregunta es ¿que estoy haciendo mal?, o ¿porque no funciona?
¿como puedo hacer un formulario tan sencillo como ese?

Tampoco me sirvio Box porque por algun motivo no funciona, y si lo se...
Es meter cajitas una dentro de otra, pero la logica con la que deberia de funcionar para mi, ps no lo hace en lo absoluto, siquiera puedo alinear los objetos que aparecen debajo de los primeros labels porque si el campo es mas largo que el otro quedan desalineados.

asi que... todo un reto

¿que me recomiendan?
  #2 (permalink)  
Antiguo 21/06/2018, 08:14
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: GridBagLayout - Dudas

¿Has probado con esto?
Parece que las propiedades se resetean una vez añadidas y hay que volver a definirlas.

gbc.gridx = 0;
gbc.gridy = 0;
this.add(LB1, gbc);
gbc.gridx = 2;
gbc.gridy = 0;
this.add(TEXT1, gbc);
gbc.gridx = 6;
gbc.gridy = 0;
this.add(LB2);
gbc.gridx = 8;
gbc.gridy = 0;
this.add(TEXT2);
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 21/06/2018, 21:00
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: GridBagLayout - Dudas

Si, es justamente lo que habia intentado, pero no funciona.
  #4 (permalink)  
Antiguo 22/06/2018, 01:02
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: GridBagLayout - Dudas

Por si acaso prueba a añadir el tamaño de los componentes (num de filas y columnas que ocupan) manualmente antes de añadir cada uno

constraints.gridwidth = 1;
constraints.gridheight = 1;
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #5 (permalink)  
Antiguo 22/06/2018, 02:26
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
Respuesta: GridBagLayout - Dudas

Asi, pero no hay resultados... no me esta dejando espacios para nada.
Código Java:
Ver original
  1. public class ConnectionData extends JPanel{
  2.  
  3.     private GridBagConstraints gbc;
  4.     private JLabel LB_1, LB_2;
  5.     private JTextField TEXT_1, TEXT_2;
  6.  
  7.     public ConnectionData(){
  8.    
  9.         this.gbc = new GridBagConstraints();
  10.         GridBagLayout gbl = new GridBagLayout();
  11.         this.setLayout(gbl);
  12.        
  13.         this.LB_1 = new JLabel("LB_1");
  14.         this.LB_2 = new JLabel("LB_2:");
  15.         this.TEXT_1 = new JTextField(10);
  16.         this.TEXT_2 = new JTextField(6);
  17.        
  18.         gbc.gridwidth = 1;
  19.         gbc.gridheight = 1;
  20.         gbc.gridx = 0;
  21.         gbc.gridy = 0;
  22.         this.add(LB_1, gbc);
  23.        
  24.         gbc.gridwidth = 1;
  25.         gbc.gridheight = 1;
  26.         gbc.gridx = 2;
  27.         gbc.gridy = 0;
  28.         this.add(TEXT_1, gbc);
  29.        
  30.         gbc.gridwidth = 1;
  31.         gbc.gridheight = 1;
  32.         gbc.gridx = 6;
  33.         gbc.gridy = 0;
  34.         this.add(LB_2, gbc);
  35.        
  36.         gbc.gridwidth = 1;
  37.         gbc.gridheight = 1;
  38.         gbc.gridx = 8;
  39.         gbc.gridy = 0;
  40.         this.add(TEXT_2, gbc);
  41.        
  42.     }
  43. }
  #6 (permalink)  
Antiguo 22/06/2018, 15:25
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 7 meses
Puntos: 188
Respuesta: GridBagLayout - Dudas

Aquí tienes una demo. Revisa el código y seguro que encuentras lo que falta.

https://docs.oracle.com/javase/tutor...ayoutDemo.java
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: dudas, jpa, jtextfield
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 17:17.