Programación General > Java

 Como Pasar Parametros Y Ver Su Valor Modificado

(1/1)

alemag:
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.

escape:
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.

alemag:
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 ???

escape:
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.

silverfox:
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 --- import java.util.*; public class Test_Java {   public List lista= null;   Test_Java(){}   public static void main (String args[]){    Test_Java t= new Test_Java();    Test_Java2 m= new Test_Java2();    m.alterar_lista(t.lista);    if (t.lista!= null)      for (int i=0; i < t.lista.size(); i++)        System.out.println(t.lista.get(i));    else      System.out.println("La lista está vacía!!!");  }} 
Clase 2, intento 1


--- Código: Text ---import java.util.*; public class Test_Java2 {    public Test_Java2() {  }    public void alterar_lista (List a){    a= new ArrayList();    a.add("obj1");    a.add("obj2");    a.add("obj3");  }} 
Diferencia entre lo anterior y esto otro:

Clase 1, intento 2:

--- Código: Text --- import java.util.*; public class Test_Java {   public List lista= new ArrayList();   Test_Java(){}   public static void main (String args[]){    Test_Java t= new Test_Java();    Test_Java2 m= new Test_Java2();    m.alterar_lista(t.lista);    if (t.lista!= null)      for (int i=0; i < t.lista.size(); i++)        System.out.println(t.lista.get(i));    else      System.out.println("La lista está vacía!!!");  }} 
Clase 2, intento 2


--- Código: Text ---import java.util.*; public class Test_Java2 {    public Test_Java2() {  }    public void alterar_lista (List a){    a.add("obj1");    a.add("obj2");    a.add("obj3");  }} 

A primera vista son iguales, ¿verdad? ;)


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

Un saludo.


Silverfox

Navegación

[0] Índice de Mensajes

Ir a la versión completa