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

Problemas con getUserObject dentro del JTree

Estas en el tema de Problemas con getUserObject dentro del JTree en el foro de Java en Foros del Web. Hola foreros, tengo un Jtree que al clickear sobre una hoja me debería mostrar cierta información. Para controlar cuando selecciono una hoja tengo: Código: private ...
  #1 (permalink)  
Antiguo 17/01/2008, 05:30
 
Fecha de Ingreso: enero-2008
Mensajes: 6
Antigüedad: 10 años, 5 meses
Puntos: 0
Problemas con getUserObject dentro del JTree

Hola foreros, tengo un Jtree que al clickear sobre una hoja me debería mostrar cierta información. Para controlar cuando selecciono una hoja tengo:
Código:
private class Escuchador implements TreeSelectionListener{
		public void valueChanged(TreeSelectionEvent e) {
			DefaultMutableTreeNode dmtn=(DefaultMutableTreeNode) jTree.getLastSelectedPathComponent();
			
			if(dmtn==null){
				return;
			}
			Object objeto=dmtn.getUserObject();
			if(dmtn.isLeaf()){
				NodoNuevo nodoNuevo=(NodoNuevo)objeto;
…
La clase NodoNuevo es algo así:
Código:
	private class NodoNuevo{
		private String nombre;
		private Object objeto;
		public NodoNuevo(String nombre,Object objeto){
			this.nombre=nombre;
			this.objeto=objeto;
		}
….
Y cuando creo el DefaultMutableTreeNode del árbol lo hago de esta manera:
Código:
NodoNuevo nodoNuevo=new NodoNuevo(“Cuadrupedos”,new Perro());
				nodo=new DefaultMutableTreeNode(nodoNuevo.getNombre());
La aplicación me salta con el error: Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to X$NodoNuevo al seleccionar en el árbol una hoja. Y me dice que el fallo está dentro de la clase Escuchador en la línea:
Código:
				NodoNuevo nodoNuevo=(NodoNuevo)objeto;
Por que me dice que me devuelve un String si recupera un Object con getUserObject() y lo convierto a NodoNuevo con la línea del error.

Gracias
  #2 (permalink)  
Antiguo 17/01/2008, 07:23
Avatar de pyanqn  
Fecha de Ingreso: noviembre-2005
Mensajes: 331
Antigüedad: 12 años, 6 meses
Puntos: 8
Re: Problemas con getUserObject dentro del JTree

Precisamente tu problema es un cast! ya que java esta tratando de castear un "String" a
NuevoNodo.

Fijate que

new DefaultMutableTreeNode(nodoNuevo.getNombre()); crea un TreeNode que contiene un objeto String, ya que getNombre, retorna un String.
Lo que yo acostubro hacer es :

new DefaultMutableTreeNode(nodoNuevo); y

NodoNuevo nodoNuevo=new NodoNuevo(new Perro());

y sobresecribir el metodo toString() de la clase Perro

class Perro {
private String nombre = "carlitos";
...

public String toString(){
return this.nombre;
}
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




La zona horaria es GMT -6. Ahora son las 12:48.