Java - Ficheros de lesctura y escritura

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Ficheros de lesctura y escritura

Publicado por Carlos (5 intervenciones) el 01/04/2020 07:18:38
estoy haciendo un modulo a distancia dam y la verdad que me resulta muy dificiltodo
tengo problemas en los ficheros y en las ventas swing alguien me echa un cable al proyecto para otros sea facil pero para mi me resulta dificil llevo varios dias asi y no se donde pedir ayuda gracias.......... correo es [email protected]
hay dejo el codigo el primer problema que tengo es que no me carga tengo un vector que se me debe mostrar a la ventana grupo y no se me carga lo segundo en los ficheros stoy algo perdido alguien que me eche un cable
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class GestorGrupo implements IGestorGrupo, Serializable {
	ArrayList<Grupo> GrupoVector;
 
 
	public GestorGrupo() {
		GrupoVector = new ArrayList<Grupo>();
		}
 
 
	@Override
	public void incluyeGrupo(String idGrupo) {
		Grupo grupo = new Grupo(idGrupo);
		GrupoVector.add(grupo);
		System.out.println(grupo.getIdGrupo() + "-------------------oooooooo-------------");
	}
 
	@Override
	public boolean existeGrupo(String idGrupo) {
 
		for (Grupo grupo : GrupoVector) {
			if (grupo.getIdGrupo().equals(idGrupo))
				return true;
 
		}
 
		return false;
 
	}
 
	@Override
	public void rellenarDatos(JComboBox lista) {   /////se supone al llamar este metodo tiene q rrellenarme
		System.out.println("entro");                                  un Jcombobox pero no me lo rellena al llamar el metodo
		for (Grupo grupo : GrupoVector) {
			lista.addItem(grupo.getIdGrupo());
			System.out.println("Forrrr");
 
		}
	}
 
	@Override
	public Grupo buscarPorId(String idGrupo) {
 
		for (Grupo grupo : GrupoVector) {
			if (grupo.getIdGrupo().equals(idGrupo)) {
				return grupo;
			}
 
		}
		return null;
	}
 
	public ArrayList<Grupo> getGrupoVector() {
		return GrupoVector;
	}
 
	public void setGrupoVector(ArrayList<Grupo> grupoVector) {
		GrupoVector = grupoVector;
	}
 
}
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
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ficheros de lesctura y escritura

Publicado por Franklin (179 intervenciones) el 01/04/2020 14:22:25
en ocasiones recorrer el for como tu lo haces no me funciona correctamente, intenta usar el for i<GrupoVector.size(),

1
2
3
4
5
6
7
8
public void rellenarDatos(JComboBox lista) {   /////se supone al llamar este metodo tiene q rrellenarme
    System.out.println("entro");                                  un Jcombobox pero no me lo rellena al llamar el metodo
    for (int i=0; i<GrupoVector.size(); i++) {
        lista.addItem(GrupoVector.get(i).getIdGrupo());
        System.out.println("Forrrr");
 
    }
}

de otro modo, verifica que la dimensión del arreglo GrupoVector antes del for, para que valides que posee información.
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
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ficheros de lesctura y escritura

Publicado por Franklin (179 intervenciones) el 01/04/2020 15:10:30
Actualizo.


Primero. Tienes un privated GestorGrupo en tu clase InterfacGrupo, el cual a parte de ser privado solo es creado cuando presionar Enter para agregar por lo que fuera de él es null.

Por otro lado cuando ingresas a tu clase InterfaceVisita tienes otra instancia de GestorGrupo el cual no tiene nada que ver con el que le has agregado información.

Suponiendo que InterfaceVisita utiliza el GestorGrupo de InterfacGrupo mediante un getGestorGrupo(GestorGrupo gestor).

de igualmente tu comboBox no se llenaría con información. Tu comboBox solo se llena cuando abres el sistema, Solo y unicamente cuando abres el Sistema, yo opino que deberías de meter ese código cuando Presionas en el sub Menu <uno> del Menu <Visita>
así, primero llenas la información y cuando requieras ir a Visita lo llenas.


Por ultimo no tienes un metodo ClearComboBox(), si tienes 1 dato y abres una y otra vez, se llena el combo box 1,1,1,1,1,1,1,1,1 ya que no se limpia. y recuerda que el comboBox está definido una vez abres el sistema.


en Resumen, InterfaceVisita debería de compartir o recibir el gestor de InterfacGrupo, y llenar el comboBox cuando presionas click en el subMenu<uno> del menu <visitas>

o al menos de esta manera he logrado llenar tu comboBox

Como añadido: puedes agregar Grupos repetidos, el metodo para validar si existe o no, siempre los acepta como únicos

Si gustas te paso las clases con las modificaciones o prefieres hacerlo tu mismo?
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
sin imagen de perfil
Val: 9
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Ficheros de lesctura y escritura

Publicado por carlos (5 intervenciones) el 01/04/2020 15:58:59
Si me lo puedes pasar te lo agradecería así me voy dando cuenta en que estoy haciendo mal
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
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ficheros de lesctura y escritura

Publicado por Franklin (179 intervenciones) el 01/04/2020 16:25:25
de manera Personal te recomendaría usar netBeans para que te apoyes a estructurar las ventanas y sería un poco mas "facil" diseñar y entender el funcionamiento de cada cosa. ( opinion muy personal ). de manera que te preocupas por el comportamiento y diseño deseño de cada Clase y objetos que vas a utilizar. Pero de igual manera respeto como trabajas, cada quien tiene su manera y a su gusto.

En si tu código funciona ( las clases Interface ) que gestionan cada uno de los objetos.

únicamente cambié:
* InterfacGrupo para que su gestor fuera de acceso Publico
* InterfaceVisita tiene un metodo Publico para limpiar el ComboBox ya que él es quien le pertenece
* MenuPanel para que cada vez que Presione sobre subMenu <uno> del menu <Visitas> utilice el metodo limpiarComboBox de Visitas y luego llene los datos al comboBox usando el gestor de InterfacGrupo

Solo con esos cambios llena los grupos ingresados en InterfacGrupo.

Por otro lado para evitar que se agreguen grupos repetidos cambie la clase Gestor Grupo. levemente

los metodos. incluyeGrupo() y existeGrupo().

Con esto agregas los grupos sin problemas y evita agregues repetidos.

Por cierto Gracias, gracias a tu código entendí sin problemas como documentar los métodos de las clases. Cosa que antes no sabía.
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
sin imagen de perfil
Val: 9
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Ficheros de lesctura y escritura

Publicado por Carlos (5 intervenciones) el 01/04/2020 19:31:46
Me alegro que te ayude en algo , pero yo me perdi porque cambiar casi todo a estatico me perdi alli pero voy a revisarlo varias veces hasta entenderlo y gracias tio por leerme , tengo otro problema con los ficheros


EscribirObjeto[ que al principio lee el objeto escrito y lo vuelve a pegar osea lo leee y vuelve a pegar todo el objeto
pero tengo errores nose estoy haciendo mal

intento el objeto que van entrando metiendo al arraylist pero me sale error al leerlo

En el paquete modelo estan todos los metodos


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
public class AccesoLecturaObjetosSerializado implements IAccesoFicherosArrayList, Serializable {
	File archivo;
	ObjectInputStream lectura;
	ObjectOutputStream Escrituraa;
 
	/**
	 * Abre el flujo asociado a la ruta correspondiente
	 *
	 * @param ruta
	 *            al flujo
	 * @return si no ha habido problema al abrir para lectura
	 */
	public boolean abrirFlujoLectura(String ruta) {
		archivo = new File(Constantes.rutaGrupo);
		try {
			lectura = new ObjectInputStream(new FileInputStream(archivo));
		} catch (Exception e) {
			return false;
		}
		return true;
	}
 
	public Object leerObjeto() {// leoo Obj normal
 
		Object temporal = null;
		try {
			temporal = lectura.readObject();
			return temporal;
		} catch (Exception e) {
			return temporal;
		}
	}
 
	public boolean cerrarFlujoLectura() {
		try {
			lectura.close();
		} catch (Exception e) {
			return false;
		}
		return true;
	}
 
	@Override
	public boolean escribirObjeto(Object x, String path) {
		archivo = new File(path);
		ArrayList Array = null;
 
		if (archivo.exists()) {// lo que pretendo hacer es un
			x = leerObjeto(path);
			// Array = new ArrayList();
 
		} else {
			Array = new ArrayList();
		}
 
		if (!x.equals(null))
			Array.add(x);
 
		Array.add(x);
 
		try {
			Escrituraa = new ObjectOutputStream(new FileOutputStream(archivo));
			Escrituraa.writeObject(Array);
			Escrituraa.close();
		} catch (FileNotFoundException e) {
			// e.printStackTrace();
 
			return false;
		} catch (IOException e) {
			// e.printStackTrace();
 
			return false;
		}
 
		return true;
	}
 
	@Override
	public Object leerObjeto(String path) {   // se supone que leer un archivo y me retorna un objeto
		archivo = new File(path);
		Object GuardaLectura = null;
		try {
 
			do {
 
				lectura = new ObjectInputStream(new FileInputStream(archivo));
				GuardaLectura = lectura.readObject();
 
				System.out.println(GuardaLectura.toString());
			} while (true);
 
		} catch (FileNotFoundException e) {
 
		} catch (IOException e) {
 
		} catch (ClassNotFoundException e) {
			System.out.println("Error");
		}
 
		return GuardaLectura;
	}
 
	public static void main(String[] args) {
		Grupo grupito = new Grupo("88");
		// Exposicion exp=new Exposicion("Carlos", "11", "12");
 
		AccesoLecturaObjetosSerializado lectura = new AccesoLecturaObjetosSerializado();
 
		if (lectura.escribirObjeto(grupito, Constantes.rutaGrupo)) {
			lectura.leerObjeto(Constantes.rutaGrupo);
		} else {
			System.out.println("NoArchivoMain");
		}
 
	}

Clases
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