Java - castear alumno

 
Vista:
Imágen de perfil de Charly
Val: 178
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

castear alumno

Publicado por Charly (118 intervenciones) el 08/02/2017 13:40:14
Hola tengo un combobox y quiero que al seleccionar un objeto me lo convierta a la clase Alumno que tengo creada.
He probado a convertirlo primero a string y de ahí a compararlo con el resto de strings del archivo donde se guardan pero no hay manera.
Me dice que no puedo castear de String a Alumno, ni tampoco de Object a Alumno.
El método donde lo tengo es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void mostrar_registro_bajas_por_clave(String clave){
		if(clave!=null){
			try{
				Object o=new Alumno(clave);
				Alumno a=(Alumno)o;
				a=(Alumno)combo_bajas.getSelectedItem();
				txt_clave_bajas.setText(a.getClave());
				txt_nombre_bajas.setText(a.getNombre());
				txt_apellidos_bajas.setText(a.getApellidos());
				txt_edad_bajas.setText(a.getEdad());
				txt_calle_bajas.setText(a.getDireccion().getCalle());
				txt_numero_bajas.setText(a.getDireccion().getNumero());
				txt_codpostal_bajas.setText(a.getDireccion().getCodPostal());
			}catch(Exception e){
				e.printStackTrace();
			}
		}else{
			limpiar_cajas_bajas();
		}
	}
Y el mensaje de error es el siguiente:
java.lang.ClassCastException: java.lang.String cannot be cast to Alumno
at gestorAlumnos.mostrar_registro_bajas_por_clave(gestorAlumnos.java:422)
at gestorAlumnos.actionPerformed(gestorAlumnos.java:526)
at javax.swing.JComboBox.fireActionEvent(Unknown Source)
at javax.swing.JComboBox.contentsChanged(Unknown Source)
at javax.swing.AbstractListModel.fireContentsChanged(Unknown Source)
at javax.swing.DefaultComboBoxModel.setSelectedItem(Unknown Source)
at javax.swing.DefaultComboBoxModel.addElement(Unknown Source)
at javax.swing.JComboBox.addItem(Unknown Source)
at gestorAlumnos.actualizar_combo(gestorAlumnos.java:393)
at gestorAlumnos.stateChanged(gestorAlumnos.java:487)
at javax.swing.JTabbedPane.fireStateChanged(Unknown Source)
at javax.swing.JTabbedPane$ModelListener.stateChanged(Unknown Source)
at javax.swing.DefaultSingleSelectionModel.fireStateChanged(Unknown Source)
at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(Unknown Source)
at javax.swing.JTabbedPane.setSelectedIndexImpl(Unknown Source)
at javax.swing.JTabbedPane.setSelectedIndex(Unknown Source)
at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.mousePressed(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

El error me lo marca en la línea que pone: a=(Alumno)combo_bajas.getSelectedItem();
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 Carlos Grimaldo
Val: 75
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

castear alumno

Publicado por Carlos Grimaldo (31 intervenciones) el 08/02/2017 23:35:24
Buenas tardes.

Que almacenas en el combo_bajas, podrías incluir código de la carga de datos a este combo...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Charly
Val: 178
Ha disminuido su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

castear alumno

Publicado por Charly (118 intervenciones) el 09/02/2017 08:41:46
Pues si Carlos, tienes razón.
Cargo los alumnos que he creado y que hay en el fichero Alumnos.txt.
Aquí va el código:
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
private void alta_registro() throws Exception{
	Alumno a;
	if(txt_clave_altas.getText().isEmpty()){
		JOptionPane.showMessageDialog(this,"Campo clave vacío!");
	}else{
		try{
			a=new Alumno(txt_clave_altas.getText(),txt_nombre_altas.getText(),txt_apellidos_altas.getText(),txt_edad_altas.getText(),txt_calle_altas.getText(),txt_numero_altas.getText(),txt_codpostal_altas.getText());
			//comprobar alumno repetido
			boolean duplicada=false;
			FileReader fr=new FileReader("alumnos.txt");
			BufferedReader bf=new BufferedReader(fr);
			while(bf.readLine()!=null){
				if(a.toString().equals(bf.readLine())){
					duplicada=true;
					JOptionPane.showMessageDialog(this,"Alumno repetido!");
				}
			}
			bf.close();
			if(duplicada==false){
				//añadir nuevo registro
				FileWriter fw=new FileWriter("alumnos.txt",true);
				BufferedWriter bw=new BufferedWriter(fw);
				bw.write(a.toString()+"\r\n");
				bw.close();
				this.limpiar_cajas_altas();
			}
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}
Y aquí el método del combo:
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
private void actualizar_combo(String str_combo){
	try{
		if(str_combo.equals("combo_bajas")){
			combo_bajas.removeAllItems();
			FileReader fr=new FileReader("alumnos.txt");
			BufferedReader bf=new BufferedReader(fr);
			while(bf.readLine()!=null){
				combo_bajas.addItem(bf.toString());
			}
			bf.close();
			if(combo_bajas.getItemCount()!=0){
				mostrar_registro_bajas_por_clave((String)combo_bajas.getSelectedItem());
			}
		}else{
			combo_modif.removeAllItems();
			FileReader fr=new FileReader("alumnos.txt");
			BufferedReader bf=new BufferedReader(fr);
			while(bf.readLine()!=null){
				combo_modif.addItem(bf.toString());
			}
			bf.close();
		}
		if(combo_bajas.getItemCount()!=0){
			mostrar_registro_modif_por_clave((String)combo_modif.getSelectedItem());
		}else{
			limpiar_cajas_modif();
		}
	}catch(Exception e){
		e.printStackTrace();
	}
}
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