Java - DefaultMutableTreeNode

 
Vista:

DefaultMutableTreeNode

Publicado por lilip (1 intervención) el 24/10/2005 02:30:02
Me ha surgido un problemón

Resulta que yo he creado un defaultMutableTreeNode que paso por parámetro a otras funciones para que éstas hagan una copia y puedan modificarlo para mostrar otras cosas.

El problema llega cuando no me hace bien la copia, con todo el rollo de alias de Java no puedo hacerla facil con una asignación y implementando la interfaz Cloneable solo me hace el primer nodo.

Cómo podria crear una copia de un DefaultMutableTreeNode? Es decir,yo quiero que el DefaultMutableTreeNode que me han pasado por parámetro pueda hacer una copia para poder modificar unas cosas, pero que nunca se me destroze el original ( el pasado por parámetro)

Muchas gracias
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
sin imagen de perfil

RE:DefaultMutableTreeNode

Publicado por chuidiang (950 intervenciones) el 24/10/2005 08:37:00
Hola:

DefaultMutableTreeNode es Clonable. El objeto que metes dentro como dato tuyo también debería serlo. No sé si funciona bien el hacer clone() del nodo raiz y te copia todo, pero por lo que dices parece que no.

También implementa la interface Serializable. Tu dato interno también debería implementarla, junto con todos sus atributos y los atributos de sus atributos. Si todo lo implicado es Serializable, puedes meter el objeto en un ObjectOutputStream y recurperar una copia por un ObjectInputStream. La interface Serializable sirve para poder enviar un objeto a un fichero, a través de un socket, etc. Para no tener que crear un fichero, un socket o lo que sea, puedes usar un ByteArrayOutputStream y un ByteArrayInputStream.

El código puede ser como este

ByteArrayOutputStream arrayEscritura = new ByteArrayOutputStream ( );
ObjectOutputStream streamEscritura = new ObjectOutputStream ( arrayEscritura );

streamEscritura.writeObject ( tuNodoRaiz );
streamEscritura.flush ( );

ByteArrayInputStream arrayLectura = new ByteArrayInputStream ( arrayEscritura.toByteArray ( ) );

ObjectInputStream streamLectura = new ObjectInputStream ( arrayLectura );

copiaDeNodoRaiz = streamLectura.readObject ( );

Prueba a ver si va.

Si no va, tendras que ir copiando todos los nodos de uno en uno.

Se bueno.
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