SoloCodigo

Programación General => Java => Mensaje iniciado por: alemag en Sábado 9 de Diciembre de 2006, 15:07

Título: Como Pasar Parametros Y Ver Su Valor Modificado
Publicado por: alemag en Sábado 9 de Diciembre de 2006, 15:07
Saludos compañeros, tengo una clase A, y desde esa clase llamo a otra clase B. En esta clase B tengo definidas unas variables que se ven modificado su valor, pero creo un objeto de la clase B en la clase A, dichos valores no se ven modificados. Concretamente es:

Public class Nuevo
{
JList lista;
}

Public class abrir
{
Public void abrir_fichero (…)
{
 // list contiene, a traves dl modelo, una lista de cadenas
// y su valor se modifica
}
}

Y en el programa principal hago:
Class Menu
{

Nuevo n=new Nuevo();
Abrir ab=new Abrir();
// y si ahora quiero ver el contenido de la lista con n.lista su valor no se ve modificado,
// me dice que no contiene ninguna cadena, cuando deberia contener alguna.
}
Como puedo hacer para ver el contenido real ¿?? (en abrir, en la clase, la contiene bien la lista de cadenas, pero debo cometer algun error en el paso de parametros)

Por favor ayudadme que es un poco urgente.
Muchas gracias.
Título: Re: Como Pasar Parametros Y Ver Su Valor Modificado
Publicado por: escape en Sábado 9 de Diciembre de 2006, 17:38
por lo que entendí de tu explicación, en la clase Abrir, lees un archivo y el contenido de  ese archivo lo vas a pasar a una JList. Lo que puedes hacer es en la clase Abrir lees el contenido del archivo con tu metodo void abrirArchivo, me imagino que pasas el contenido a una array de Strings. En la misma clase Abir creas un metodo public String[] getContenido() en donde retornas el array.

En tu clase Nuevo, instancias un objeto de Abrir, principalmente para usar el metodo getContenido(), el que devuelve el array. El constructor de JList recibe un array, por lo tanto el getContenido() lo puedes usar como parámetro para ese constructor.
Título: Re: Como Pasar Parametros Y Ver Su Valor Modificado
Publicado por: alemag en Sábado 9 de Diciembre de 2006, 21:36
Lo que hago en abrir es rellenar la lista JList que tengo declarada en Nuevo (y que le paso como parametro) con lo que la variable n deberia estar rellenada no ??? (con los datos de la lista) pero cuando la leo en mi menu principal no contiene nada. Por que puede ser ???
Título: Re: Como Pasar Parametros Y Ver Su Valor Modificado
Publicado por: escape en Sábado 9 de Diciembre de 2006, 23:16
en teoria la idea está bien, pero otra cosa es ver el código de tu programa.  Adjunta el codigo usando la opción Adjuntar archivos.
Título: Re: Como Pasar Parametros Y Ver Su Valor Modificado
Publicado por: silverfox en Lunes 11 de Diciembre de 2006, 11:55
Hola...

Por lo que dices, tiene pinta de que no estás pasando lo que se llama un 'objeto vivo' (en este caso, 'lista viva')

Fijate en la diferencia entre estos dos códigos, y su resultado final:

Clase 1, intento 1:
Código: Text
  1.  
  2. import java.util.*;
  3.  
  4. public class Test_Java {
  5.  
  6.   public List lista= null;
  7.  
  8.   Test_Java(){}
  9.  
  10.   public static void main (String args[]){
  11.     Test_Java t= new Test_Java();
  12.     Test_Java2 m= new Test_Java2();
  13.     m.alterar_lista(t.lista);
  14.     if (t.lista!= null)
  15.       for (int i=0; i < t.lista.size(); i++)
  16.         System.out.println(t.lista.get(i));
  17.     else
  18.       System.out.println("La lista está vacía!!!");
  19.   }
  20. }
  21.  

Clase 2, intento 1

Código: Text
  1. import java.util.*;
  2.  
  3. public class Test_Java2 {
  4.  
  5.   public Test_Java2() {
  6.   }
  7.  
  8.   public void alterar_lista (List a){
  9.     a= new ArrayList();
  10.     a.add("obj1");
  11.     a.add("obj2");
  12.     a.add("obj3");
  13.   }
  14. }
  15.  

Diferencia entre lo anterior y esto otro:

Clase 1, intento 2:
Código: Text
  1.  
  2. import java.util.*;
  3.  
  4. public class Test_Java {
  5.  
  6.   public List lista= new ArrayList();
  7.  
  8.   Test_Java(){}
  9.  
  10.   public static void main (String args[]){
  11.     Test_Java t= new Test_Java();
  12.     Test_Java2 m= new Test_Java2();
  13.     m.alterar_lista(t.lista);
  14.     if (t.lista!= null)
  15.       for (int i=0; i < t.lista.size(); i++)
  16.         System.out.println(t.lista.get(i));
  17.     else
  18.       System.out.println("La lista está vacía!!!");
  19.   }
  20. }
  21.  

Clase 2, intento 2

Código: Text
  1. import java.util.*;
  2.  
  3. public class Test_Java2 {
  4.  
  5.   public Test_Java2() {
  6.   }
  7.  
  8.   public void alterar_lista (List a){
  9.     a.add("obj1");
  10.     a.add("obj2");
  11.     a.add("obj3");
  12.   }
  13. }
  14.  


A primera vista son iguales, ¿verdad? ;)


Espero que puedas sacar algunas conclusiones que te sirvan para solucionar tu problema.

Un saludo.


Silverfox