Java - por favor ayuda urgente sobre gridlayout

   
Vista:

por favor ayuda urgente sobre gridlayout

Publicado por CARLOS ADRIAN SOTO  (20 intervenciones) el 18/12/2009 03:11:09
buenas noches la verdad soy un poco novato en java, he intentado crar una aplicacion con interfas grafica y quiero manejar un grid layout, importe todas las librarias y todo esta bien para mi pero la verdad me muestra error. agradesco si me ayudan explicandome donde esta el error ya que estoy varado, con lo de la interfas grafica.

da antemano muchas gracias.
package INVENTARIO;

/**
*
* @author soto
*/

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;

public class Producto extends JFrame implements ActionListener{
JLabel j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11;
JTextField t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;
JButton b1,b2;

public static void main(String args[]){
Container contenedor=this.getContentPane();
contenedor.setLayout(new GridLayout(6,1));//manejar 6 renglones y filas
Font fuente=new Font("Norasi",Font.BOLD,18);//fuente para etiquetas y botones
j1=new JLabel("numero de cuenta");
j2=new JLabel("bodega");
j3=new JLabel("linea");
j4=new JLabel("Codigo");
j5=new JLabel("codigo de barras");
j6=new JLabel("descripcion");
j7=new JLabel("marca");
j8=new JLabel("unidad de medida");
j9=new JLabel("peso");
j10=new JLabel("impuesto");
j11=new JLabel("precio venta");
t1=new JTextField(8);t2=new JTextField(5);t3=new JTextField(2);
t4=new JTextField(12);t5=new JTextField(15);t6=new JTextField(20);
t7=new JTextField(20);t8=new JTextField(5);t9=new JTextField(10);
t10=new JTextField(2);t11=new JTextField(10);
b1=new JButton("GUARDAR");b2=new JButton("LIMPIAR");

Container renglon1=new Container();
renglon1.setLayout(new GridLayout(1,4));

Container renglon2=new Container();
renglon2.setLayout(new GridLayout(1,4));

Container renglon3=new Container();
renglon3.setLayout(new GridLayout(1,4));

Container renglon4=new Container();
renglon4.setLayout(new GridLayout(1,4));

Container renglon5=new Container();
renglon5.setLayout(new GridLayout(1,4));

Container renglon6=new Container();
renglon6.setLayout(new GridLayout(1,4));

renglon1.add(j1,t1);renglon1.add(j7,t7);
renglon2.add(j2,t2);renglon2.add(j8,t8);
renglon3.add(j3,t3);renglon3.add(j9,t9);
renglon4.add(j4,t4);renglon4.add(j10,t10);
renglon5.add(j5,t5);renglon5.add(j11,t11);
renglon6.add(j6,t6);renglon6.add(b1,b2);
j1.setFont(fuente);j2.setFont(fuente);j3.setFont(fuente);
j4.setFont(fuente);j5.setFont(fuente);j6.setFont(fuente);
j7.setFont(fuente);j8.setFont(fuente);j9.setFont(fuente);
j10.setFont(fuente);j11.setFont(fuente);b1.setFont(fuente);
b2.setFont(fuente);
b1.addActionListener(this);
b2.addActionListener(this);
contenedor.add(renglon1);contenedor.add(renglon2);
contenedor.add(renglon3);contenedor.add(renglon4);
contenedor.add(renglon5);contenedor.add(renglon6);
add(contenedor);
}
public void actionPerformed(ActionEvent e){

}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:por favor ayuda urgente sobre gridlayout

Publicado por jack (3 intervenciones) el 18/12/2009 03:51:41
hola CARLOS ADRIAN SOTO
mira amigo en principio no puedes tener la referencia this en el metodo main debido a que este es static lo ideal es crear un constructor para agregar todos los componentes y en el cual si podras usar la referencia this; tambien a tu ventana le falta asignarle un tamaño, el evento de cerrado pero bueno eso lo haras despues.

luego de corregir estas cosas el error esta en en la quinta linea antes de terminar en add(contenedor); por que le estas agregando un contendor al contendor que ya tiene el frame lo que debes hacer es remplazarlo y poner este como contenedor escribiendo this.setContentPane(contenedor);

aca te dejo el codigo con algunas modificaciones por lo menos ya esta ejecutando sinembargo hay los jtextfield no los esta agrgando intenta agregando los jlabel y los jtextfield por separado


import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;

public class Producto extends JFrame implements ActionListener{
JLabel j1,j2,j3,j4,j5,j6,j7,j8,j9,j10,j11;
JTextField t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11;
JButton b1,b2;

public Producto (){

this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
Container contenedor=this.getContentPane();
contenedor.setLayout(new GridLayout(6,1));//manejar 6 renglones y filas
Font fuente=new Font("Norasi",Font.BOLD,18);//fuente para etiquetas y botones
j1=new JLabel("numero de cuenta");
j2=new JLabel("bodega");
j3=new JLabel("linea");
j4=new JLabel("Codigo");
j5=new JLabel("codigo de barras");
j6=new JLabel("descripcion");
j7=new JLabel("marca");
j8=new JLabel("unidad de medida");
j9=new JLabel("peso");
j10=new JLabel("impuesto");
j11=new JLabel("precio venta");
t1=new JTextField(8);t2=new JTextField(5);t3=new JTextField(2);
t4=new JTextField(12);t5=new JTextField(15);t6=new JTextField(20);
t7=new JTextField(20);t8=new JTextField(5);t9=new JTextField(10);
t10=new JTextField(2);t11=new JTextField(10);
b1=new JButton("GUARDAR");b2=new JButton("LIMPIAR");

Container renglon1=new Container();
renglon1.setLayout(new GridLayout(1,4));

Container renglon2=new Container();
renglon2.setLayout(new GridLayout(1,4));

Container renglon3=new Container();
renglon3.setLayout(new GridLayout(1,4));

Container renglon4=new Container();
renglon4.setLayout(new GridLayout(1,4));

Container renglon5=new Container();
renglon5.setLayout(new GridLayout(1,4));

Container renglon6=new Container();
renglon6.setLayout(new GridLayout(1,4));

renglon1.add(j1,t1);renglon1.add(j7,t7);
renglon2.add(j2,t2);renglon2.add(j8,t8);
renglon3.add(j3,t3);renglon3.add(j9,t9);
renglon4.add(j4,t4);renglon4.add(j10,t10);
renglon5.add(j5,t5);renglon5.add(j11,t11);
renglon6.add(j6,t6);renglon6.add(b1,b2);
j1.setFont(fuente);j2.setFont(fuente);j3.setFont(fuente);
j4.setFont(fuente);j5.setFont(fuente);j6.setFont(fuente);
j7.setFont(fuente);j8.setFont(fuente);j9.setFont(fuente);
j10.setFont(fuente);j11.setFont(fuente);b1.setFont(fuente);
b2.setFont(fuente);
b1.addActionListener(this);
b2.addActionListener(this);
contenedor.add(renglon1);contenedor.add(renglon2);
contenedor.add(renglon3);contenedor.add(renglon4);
contenedor.add(renglon5);contenedor.add(renglon6);
this.setContentPane(contenedor);
this.pack();
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){

}

public static void main(String args[])
{
new Producto();
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:por favor ayuda urgente sobre gridlayout

Publicado por CARLOS ADRIAN SOTO  (20 intervenciones) el 19/12/2009 01:27:42
hola jack mil gracias por tu ayuda, la verdad es que me apaciona la programacion pero todo lo poco que se lo he aprendido en la web.

si no es mucha molestia me gustaria tener un poco mas claro para que y com funcionan estas lineas.

this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
Container contenedor=this.getContentPane();

this.setContentPane(contenedor);
this.pack();
this.setVisible(true);

en esta parte es la que mas me ha molestado, yo antes tenia el codigo en un metodo constructor como lo pusiste, pero no sabia como hacerle la llamada desde el metodo main, ya que me mostrava error y decia que no era un metodo static.

new Producto();

de nuevo mi amigo mil gracias. y una feliz navidad y venturoso año.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:por favor ayuda urgente sobre gridlayout

Publicado por jack (18 intervenciones) el 19/12/2009 02:10:26
hola CARLOS ADRIAN SOTO
primero que todo te felicito por tu interes y por ser amable y agradecido en verdad esto motiva a seguir ayudando ahora pasare a explicarte las lineas que me pides :

this.setDefaultCloseOperation(EXIT_ON_CLOSE); esta linea hace que al presionar el boton de cerrar la ventana se cierre la ventana y mate el proceso de el programa puesto que el jframe por defecto solo cierra la ventana pero el proceso continua ejecutandoce

this.setLocationRelativeTo(null); esta linea lu unico que hace es ubicar la ventana en el centro de la pantalla sin importar la resolucion de la misma

Container contenedor=this.getContentPane(); esta linea crea una variable de tipo container la cual es igual al contenedor que tenga el jframe (normalmente lo hago diferente en tu caso lo hice asi por que vi que era mas o menos lo que manejabas en tu aplicacion)

this.setContentPane(contenedor); con esta linea remplazamos el contenedor principal del jframe por el que creamos antes preferiblemete luego de haberle agrgado todos los componentes

this.pack(); esta linea hace que la ventana tome el tamaño exacto para los componentes que tenga es decir que ni sobre ni falte espacio (se debe tener cuidado con la distribucion de los componentes como veras tu aplicacion no quedo muy bien presentada )

this.setVisible(true); esta hace que la ventana sea visible por defecto esta en false asi que hay que llmar este metodo para hacer que la ventana aparesca debe ser la ultima linea ya que primero se carga toda la configuracionde la ventana y luego si se muestra.

por ultimo te dejo mi correo y msn por si quieres preguntarme algo mas
jack@linuxmail.org este es mi correo y msn talvez te parezca extraño pero agregalo al messenger que por ese que que chateo
por lo generar estoy conectado de 8 de la mañana a 2 de la tarde y de 7 de la noche a 10 de la noche hora de colombia
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar