Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: MauroMasciar en 13 Marzo 2011, 00:43 AM

Título: JLabel y JTextField demasiado pequeños.
Publicado por: MauroMasciar en 13 Marzo 2011, 00:43 AM
Hola gente..
Hace un tiempo vengo tratando de aprender lo de GridLayout, y lo quise poner en practica en esta ventana que estuve haciendo... El problema es este:

(http://img826.imageshack.us/img826/8341/java1w.jpg) (http://img826.imageshack.us/i/java1w.jpg/)

El codigo del GridLayout de la ventana es:

Código (java) [Seleccionar]
GridLayout marco = new GridLayout(4, 2, 10, 10);
setLayout(marco);


Primero viene el titulo
Después para poner las coordenadas
Después todo los JLabel y JTextField
Y finalmente el boton. (Que éste es un FlowLayout)

Esas cuatro cosas puestas en cuatro JPanel diferentes con GridLayout... (Y ultimo con FlowLayout)

El código de los JLabel y los JTextField es es siguiente:
Código (java) [Seleccionar]
JPanel pnSoldadosAEnviar = new JPanel();
       //FlowLayout SoldEnviar = new FlowLayout();
       GridLayout SoldEnviar = new GridLayout(9, 2, 10, 10);
       pnSoldadosAEnviar.setLayout(SoldEnviar);
       //pnSoldadosAEnviar.add(lblTitSoldados, JLabel.CENTER);
       pnSoldadosAEnviar.add(lblAsalto);
       pnSoldadosAEnviar.add(txtAsalto);
       pnSoldadosAEnviar.add(lblEspeciales, JLabel.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(txtEspeciales, JTextField.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(lblFrancoTiradores, JLabel.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(txtFrancoTiradores, JTextField.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(lblAntiTanques, JLabel.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(txtAntiTanques, JTextField.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(lblMedicos, JLabel.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(txtMedicos, JTextField.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(lblHelicopterosAtaque, JLabel.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(txtHelicopterosAtaque, JTextField.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(lblAvionesCaza, JLabel.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(txtAvionesCaza, JTextField.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(lblTransporteHelis, JLabel.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(txtTransporteHelis, JTextField.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(lblTransporteAvion, JLabel.RIGHT_ALIGNMENT);
       pnSoldadosAEnviar.add(txtTransporteAvion, JTextField.RIGHT_ALIGNMENT);
       add(pnSoldadosAEnviar);


Alguien me podría ayudar?
Si necesitan algún dato mas por favor pregunten...
Gracias de antemano..

Otro dato: Cuando agrando la ventana, los TextField y los Label se van acomodando y poniendo en su tamaño normal (Aunque igualmente siguen siendo chicos)
Título: Re: JLabel y JTextField demasiado pequeños.
Publicado por: MauroMasciar en 13 Marzo 2011, 22:44 PM
Nadie? T_T
Título: Re: JLabel y JTextField demasiado pequeños.
Publicado por: 1mpuls0 en 14 Marzo 2011, 04:34 AM
La verdad no veo falla en ese código, no quieres escribir lo todo?, mandamelo por mp y lo reviso.

O intenta con setLayout(null)

:p
Título: Re: JLabel y JTextField demasiado pequeños.
Publicado por: MauroMasciar en 14 Marzo 2011, 14:53 PM
Te envie el msj, pero en mi bandeja de salida no aparece, asi que posteo el codigo aca, excluyendo el actionPerformed por las dudas...
Código (java) [Seleccionar]
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class nuevoAtaque extends JFrame implements ActionListener {
   JLabel lblTitulo = new JLabel("Coordinar nuevo ataque", JLabel.CENTER);
   JLabel lblXCoord = new JLabel("Coordenadas X:");
   JLabel lblYCoord = new JLabel("Coordenadas Y:");
   JLabel lblTitSoldados = new JLabel("Unidades a enviar:");
   JLabel lblFrancoTiradores = new JLabel("Francotiradores:");
   JLabel lblEspeciales = new JLabel("Especiales:");
   JLabel lblMedicos = new JLabel("Medicos:");
   JLabel lblAntiTanques = new JLabel("Anti-Tanques:");
   JLabel lblTransporteHelis = new JLabel("Helicopteros Transportadores:");
   JLabel lblAvionesCaza = new JLabel("Aviones caza:");
   JLabel lblAsalto = new JLabel("Asalto:");
   JLabel lblHelicopterosAtaque = new JLabel("Helicopteros de ataque");
   JLabel lblTransporteAvion = new JLabel("Aviones Transportadores");
   JLabel lblExplicacion = new JLabel();

   JTextField txtXCoord = new JTextField(10);
   JTextField txtYCoord = new JTextField(10);
   JTextField txtAsalto = new JTextField(10);
   JTextField txtEspeciales = new JTextField(10);
   JTextField txtFrancoTiradores = new JTextField(10);
   JTextField txtAntiTanques = new JTextField(10);
   JTextField txtMedicos = new JTextField(10);
   JTextField txtTransporteHelis = new JTextField(10);
   JTextField txtAvionesCaza = new JTextField(10);
   JTextField txtHelicopterosAtaque = new JTextField(10);
   JTextField txtTransporteAvion = new JTextField(10);

   JButton btnEnviar = new JButton("Enviar soldados");

   int asignAsaltos;
   int asignEspeciales;
   int asignFrancoTiradores;
   int asignAntiTanques;
   int asignMedicos;
   int asignHelicopterosAtaque;
   int asignAvionesCaza;
   int asignTransporteHelis;
   int asignTransporteAvion;
   
   public nuevoAtaque() {
       setTitle("Nuevo ataque");
       setSize(800, 600);
       GridLayout marco = new GridLayout(4, 2, 10, 10);
       setLayout(marco);

       //Listeners
       btnEnviar.addActionListener(this);

       //Etiquetas de ventana principal
       JPanel etiquetasVentPrinc = new JPanel();
       GridLayout glEtiqPrinc = new GridLayout(1, 1, 10, 10);
       etiquetasVentPrinc.setLayout(glEtiqPrinc);
       etiquetasVentPrinc.add(lblTitulo);
       add(etiquetasVentPrinc); //1

       JPanel pnCoord = new JPanel();
       GridLayout glCoordSold = new GridLayout(2, 2, 10, 10);
       //FlowLayout Coord = new FlowLayout();
       pnCoord.setLayout(glCoordSold);
       pnCoord.add(lblXCoord);
       pnCoord.add(txtXCoord);
       pnCoord.add(lblYCoord);
       pnCoord.add(txtYCoord);
       add(pnCoord); //cont =2

     

       JPanel pnSoldadosAEnviar = new JPanel();
       //FlowLayout SoldEnviar = new FlowLayout();
       //GridLayout SoldEnviar = new GridLayout(10, 2);

       pnSoldadosAEnviar.setLayout(new GridLayout(9, 2, 10, 10));

       //pnSoldadosAEnviar.add(lblTitSoldados, JLabel.CENTER);
       pnSoldadosAEnviar.add(lblAsalto);
       pnSoldadosAEnviar.add(txtAsalto);
       pnSoldadosAEnviar.add(lblEspeciales);
       pnSoldadosAEnviar.add(txtEspeciales);
       pnSoldadosAEnviar.add(lblFrancoTiradores);
       pnSoldadosAEnviar.add(txtFrancoTiradores);
       pnSoldadosAEnviar.add(lblAntiTanques);
       pnSoldadosAEnviar.add(txtAntiTanques);
       pnSoldadosAEnviar.add(lblMedicos);
       pnSoldadosAEnviar.add(txtMedicos);
       pnSoldadosAEnviar.add(lblHelicopterosAtaque);
       pnSoldadosAEnviar.add(txtHelicopterosAtaque);
       pnSoldadosAEnviar.add(lblAvionesCaza);
       pnSoldadosAEnviar.add(txtAvionesCaza);
       pnSoldadosAEnviar.add(lblTransporteHelis);
       pnSoldadosAEnviar.add(txtTransporteHelis);
       pnSoldadosAEnviar.add(lblTransporteAvion);
       pnSoldadosAEnviar.add(txtTransporteAvion);
       add(pnSoldadosAEnviar); //cont = 3

       JPanel pnBtnEnviar = new JPanel();
       FlowLayout glbtnEnviar = new FlowLayout(FlowLayout.CENTER);
       //GridLayout glbtnEnviar = new GridLayout(1, 1, 10, 10);
       pnBtnEnviar.setLayout(glbtnEnviar);
       pnBtnEnviar.add(btnEnviar);
       add(pnBtnEnviar); //cont = 4        
   }


Hice algunos pequeños cambios anoche, para ver si lo podía solucionar, pero no ha dado resultado..
Título: Re: JLabel y JTextField demasiado pequeños.
Publicado por: 1mpuls0 en 14 Marzo 2011, 18:56 PM
No sé que tanto te interese el espacio entre los componentes del panel pnSoldadosAEnviar, pero puedes intentar con esto pnSoldadosAEnviar.setLayout(new GridLayout(9, 2, 1, 1)); y/o hacer el jframe mas alto.

Te recomiendo que utilices la distribucion "GridBagLayout" es muy potente pero también muy compleja.

O puedes optar por un layout nulo, asi estables las coordenadas y tamaños de tus componentes.


Saludos.
Título: Re: JLabel y JTextField demasiado pequeños.
Publicado por: MauroMasciar en 15 Marzo 2011, 19:10 PM
Intentaré GridBagLayout..
Gracias por responder...