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

Problema con jTextField leyendo datos de un archivo

Estas en el tema de Problema con jTextField leyendo datos de un archivo en el foro de Java en Foros del Web. Hola! Estoy realizando un ejercicio (supongo que muy típico) de gestionar datos de lectura/escritura de objetos en un fichero. Tengo un JTabPane de tres pestañas: ...
  #1 (permalink)  
Antiguo 19/03/2012, 13:26
Avatar de Zaparl  
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 7 años, 7 meses
Puntos: 1
Problema con jTextField leyendo datos de un archivo

Hola!

Estoy realizando un ejercicio (supongo que muy típico) de gestionar datos de lectura/escritura de objetos en un fichero. Tengo un JTabPane de tres pestañas: una para grabar datos de la persona al fichero, otra para leerlos y otra con una tabla para mostrar todos los objetos persona del fichero. He creado una clase "Persona" donde van los atributos (nombre, dirección, edad...) los getters y setters y un override del ToString.

La fase de grabar personas en el fichero la tengo hecha y funciona. La fase de leer la tengo "casi". Y ese "casi" me está matando. El código que tengo lee los objetos persona del fichero, los mete en un ArrayList y luego le he metido una salida del string por consola para comprobar si funcionaba (y sí, funciona). El problema viene al intentar rellenar los JTextField con los strings. El código no peta pero no saca nada de nada en los JTextFields. Ahí va el código de la función de lectura. ¡Ah! Programo con NetBeans 7.1.1

Código:
        	
        private void leerPersonas() throws IOException, ClassNotFoundException
	{
		Persona persona;
		FileInputStream fichero;
                ArrayList<Persona>listaPersonas=new ArrayList<Persona>();
		
		
		//Si el fichero NO existe se lanza una excepción.
		//Acceso al fichero -> Abrir para leer (secuencialmente).
		fichero = new FileInputStream(".\\src\\gestionarPersonas\\Datos\\Personas.dat");
		//Para tener acceso a los métodos de leer objetos
		//(serialización) en el fichero.
		
		//Leer los datos de la 1ª Persona (leer un Object).
		//persona = (Persona) leer.readObject();

		//Lectura secuencial de todos los registros.
		//El readObject avanza el puntero al siguiente registro.
                int i=0;
                while ((persona = (Persona) new ObjectInputStream(fichero).readObject()) != null)
		{
                        
                    	listaPersonas.add(persona);
                        //Comprobación por consola
                        System.out.println(listaPersonas.get(i).toString());
                        i+=1;
		}	
                
                //Rellenado de los TextFields de la segunda pestaña con la primera persona 
                //dentro del
                //ArrayList (posición 0) 
               //WARNING! HOUSTON, TENEMOS UN PROBLEMA
                 txtNombre2.setText(listaPersonas.get(0).getNombre());
                 txtTelf2.setText(listaPersonas.get(0).getTelefono());
                 txtDireccion2.setText(listaPersonas.get(0).getDireccion());
                 txtEdad.setText(String.valueOf(listaPersonas.get(0).getEdad()));
                 txtApellidos.setText(listaPersonas.get(0).getApellidos());
                 
		//Cerrar el fichero.
		fichero.close();

	}
La clase Persona
Código:
import java.io.Serializable;
public class Persona implements Serializable
{
	//Es un número ID que permite comprobar si los datos grabados,
	//al ser recuperados, coinciden con la última versión
	//de la clase Persona.
	//TODO Cambiar la estructura de datos (atributos) de
	//la clase Persona y ver el tema del serial ID.
	private static final long serialVersionUID = 5227260147142969242L;

	//--- Atributos/propiedades de la clase ---
	//Concepto de encapsular o no dejar acceso directo.
	private String nombre;
	private String apellidos;
	private String telefono;
	private String direccion;
	private int edad;
	
	public Persona(String nombre, String apellidos, 
				   String telefono, String direccion, int edad)
	{
		this.nombre = nombre;
		this.apellidos = apellidos;
		this.telefono = telefono;
		this.direccion = direccion;
		this.setEdad(edad);
	}
	
	//--- Los métodos accesores (getters y setters) ---
	public String getNombre() {
		return nombre;
		//return nombre.toUpperCase();
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellidos() {
		return apellidos;
		//return apellidos.toUpperCase();
	}
	public void setApellidos(String apellidos) {
		this.apellidos = apellidos;
	}
	public String getTelefono() {
		return telefono;
	}
	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}
	public String getDireccion() {
		return direccion;
	}
	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}
	public int getEdad() {
		return edad;
	}
	public void setEdad(int edad) {
		this.edad = edad;
	}

	//--- Métodos propios de la clase ---
	public String toString()
	{
		return (this.getClass().getName() + " - " + 
				this.apellidos + ", " + 
				this.nombre + " (" + this.edad + ")");
	}
}
Muchas gracias por adelantado!
  #2 (permalink)  
Antiguo 14/11/2012, 09:49
 
Fecha de Ingreso: junio-2012
Mensajes: 11
Antigüedad: 7 años, 3 meses
Puntos: 0
Respuesta: Problema con jTextField leyendo datos de un archivo

Hola Zaparl,

Curiosamente estoy haciendo un ejercicio de carácterísticas muy similares, pero casi que tengo el mismo problema que tú.

Una pregunta ¿Donde haces la llamada al método LeerPersonas?¿Dentro de la Ventana Quizás?

Etiquetas: clase, jar, jtextfield, leyendo, netbeans, string
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:24.