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

llamar a objeto desde otra clase

Estas en el tema de llamar a objeto desde otra clase en el foro de Java en Foros del Web. Hola, lo que me parecia un problema sencillo, se me esta complicando. En mi aplicacion, en una ventana, quiero seleccionar una fila de un jtable ...
  #1 (permalink)  
Antiguo 07/09/2010, 03:19
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
llamar a objeto desde otra clase

Hola,

lo que me parecia un problema sencillo, se me esta complicando.

En mi aplicacion, en una ventana, quiero seleccionar una fila de un jtable y con esos datos me creo un objeto.

Ahora, desde otra ventana, con otro jtable, elijo una fila tambien(es otro jtable) y entonces procedo a escribir en una tabla de una base de datos... pero quiero escribir un dato en concreto de la segunda fila y otro dato de la primera fila seleccionada en el primer jtable... Pero como me paso el objeto a la segunda clase?

Os pongo codigo para que lo entendais mejor:

ESTA ES LA PRIMERA CLASE, DONDE TENGO EN MI VENTANA UN JTABLE Y SELECCIONO UNA FILA Y AL DARLE A ACEPTAR SE ME CREA EL OBJETO EMPRESA.
Código:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        seleccionado();
        dispose();
}

public Empresa seleccionado(){
        //Connection conexion = null;
        try{
        int idC = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 0);
        String id = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 1);
        String nombre = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 2);
        String fecha = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
        String ciudad = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 4);
        String ca = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 5);
        int edad_minima = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 6);
        int edad_maxima = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 7);
        String sexo = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 8);

        Empresa em = new Empresa(idC, id, nombre, fecha, ciudad, edad_minima, edad_maxima, sexo, ca, null);
        
        return em;

        }catch(Exception e){
            return null;
        }
}

Y ESTA ES LA SEGUNDA CLASE. Donde tengo otro Jtable y selecciono tambien una fila...una vez la tengo, quiero guardar una dato de este jtable y otro dato del otro jtable.
Hago primero una consulta porque el dato que quiero guardar es un autoincrementable en la bb.dd...y por eso lo leo. Pero el tema esta en lo que esta en ROJO que al llamar a seleccionado() de la otra clase me da NULL...que es lógico. Entonces como puedo pasarle el objeto EM de la otra clase que es un objeto con los datos de los seleccionado?

Código:
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        String p = "";
        Connection conexion = null;
        int id = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 0);
        String nombre = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 1);
        String apellido1 = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 2);
        String apellido2 = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
        int fecha = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 4);
        String sexo = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 5);
        String pais= (String) jTable1.getValueAt(jTable1.getSelectedRow(), 6);
        String comunidad = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 7);
        String em = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 8);
        String dni = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 9);
        int edad = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 10);
        int peso = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 11);
        int ra = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 12);

        Empleado j = new Empleado(id, nombre, apellido1, apellido2, fecha, sexo, pais, comunidad, em, dni, edad, peso, ra);
        Pesos pe = new Pesos(null, true);
        pe.setVisible(true);
        p = pe.devuelvePeso();
        Empresa em = new Empresa(0,null,null, null, null, 0, 0, null, null, null);
        SeleccionarEm cogerEm = new SeleccionarEm(null, true);
        em = cogerEm.seleccionado();
        System.out.println(em); //NNNNUUULLLL
        int idJ = j.getId(); // ESTE IDJ LO QUIERO GUARDAR EN LA BB.DD A LA VEZ QUE EL idE pero como el campo nombre es null....
        String nom = em.getNombre();// Y ESTO ES LO QUE FALLA PORQUE nom es null, puesto que no me pasa bien el objeto EM de la otra clase
        int i=0;
         try{
           Class.forName("com.mysql.jdbc.Driver");
           conexion = DriverManager.getConnection("jdbc:mysql://localhost/gestion", "root", "xxx");
           PreparedStatement consulta1 = conexion.prepareStatement("select idE from empresas where nombre='"+nom+"'");
           ResultSet result1 = consulta1.executeQuery();

           while(result1.next()){
               i = result1.getInt(1);
           }

         }catch(Exception e){
            System.out.println("Ocurrio la siguiente excepcion : " + e.toString());
            System.out.close();
        }

        try{
           Class.forName("com.mysql.jdbc.Driver");
           conexion = DriverManager.getConnection("jdbc:mysql://localhost/gestion", "root", "xxx");
           //PreparedStatement consulta1 = conexion.prepareStatement();
           Statement st = conexion.createStatement();
           st.executeUpdate("INSERT INTO participa (idJ, idC, nombre, resultado, idCategoria) VALUES('"+idJ+"', '"+i+"', '"+nom+"', "+null+", "+null+")");

        }catch(Exception e){
            System.out.println("Ocurrio la siguiente excepcion : " + e.toString());
            System.out.close();
        }finally{
            try{if (null != conexion)
                conexion.close();
            }catch(Exception e){
                System.out.println("Ocurrio la siguiente excepcion(2) : " + e.toString());
            }

        }
    }


Agradeceria mucho vuestra ayuda!
1 saludo
  #2 (permalink)  
Antiguo 07/09/2010, 05:18
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: llamar a objeto desde otra clase

me juego un brazo a que por esto em retorna NULL
Código Java:
Ver original
  1. public Empresa seleccionado(){
  2.         //Connection conexion = null;
  3.         try{
  4.                  //bla
  5.                  //bla
  6.                  //bla selectedRow()  
  7.         return em;
  8.  
  9.         }catch(Exception e){
  10.              //ESTÁS IGNORANDO UNA EXCEPTION y RETORNANDO NULL
  11.             // mejor fijate porque está saltando una y arreglalo.. o TRATALA, pero no la ignores
  12.             return null;
  13.         }
  14. }

PD: ¿Dónde enseñan a ignorar las Exceptions?.. todos los Java Jr hacen lo mismo
__________________
BadProgrammerException!
  #3 (permalink)  
Antiguo 07/09/2010, 06:01
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: llamar a objeto desde otra clase

Si, es muy posible que sea eso...
hay supongo que puedo poner un System.Out.Println... y mostrar el mensaje...

pero...porque me entra en el catch? bueno, es logico que entre porque para que entre en el try tendria que haber una fila seleccionada...

El tema esta en que yo quiero que: seleccionar una fila, irme a otra ventana(clase) seleccionar otra fila de otro jtable y luego recuperar esta...

El tema esta en que si llamo a "seleccionar()" como lo hago, logicamente no funciona y no entra en el try porque no hay nada seleccionado....

Yo me guardo la fila seleccionada en EM cuando estoy en esa clase(ventana) y me funciona...pero luego nose como recuperarla y pasarla a otra clase.
  #4 (permalink)  
Antiguo 10/09/2010, 03:51
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: llamar a objeto desde otra clase

firuzz(o quien pueda), a ver si me puedes echar un cable porfavor

gracias
  #5 (permalink)  
Antiguo 10/09/2010, 06:31
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 16 años, 4 meses
Puntos: 41
Respuesta: llamar a objeto desde otra clase

Cita:
pero...porque me entra en el catch?
porque está saliendo una Exception (muy probablemente una NullPointerException o IndexOutOfBoundsException)

Código Java:
Ver original
  1. }catch(Exception e){
  2.              //ESTÁS IGNORANDO UNA EXCEPTION y RETORNANDO NULL
  3.             // mejor fijate porque está saltando una y arreglalo.. o TRATALA, pero no la ignores
  4.             e.printStackTrace(); // <--------------
  5.         }

Cita:
es lógico que entre porque para que entre en el try tendría que haber una fila seleccionada
No veo por ningún lado que controles QUE:
jTable1.getSelectedRow() > -1
Así que no sé como estás tan seguro de lo que decís..
Lee lo que dice la javadoc de este método y vas a ver
__________________
BadProgrammerException!
  #6 (permalink)  
Antiguo 11/09/2010, 12:17
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: llamar a objeto desde otra clase

Cita:
Iniciado por FiruzzZ Ver Mensaje
porque está saliendo una Exception (muy probablemente una NullPointerException o IndexOutOfBoundsException)

Código Java:
Ver original
  1. }catch(Exception e){
  2.              //ESTÁS IGNORANDO UNA EXCEPTION y RETORNANDO NULL
  3.             // mejor fijate porque está saltando una y arreglalo.. o TRATALA, pero no la ignores
  4.             e.printStackTrace(); // <--------------
  5.         }


No veo por ningún lado que controles QUE:
jTable1.getSelectedRow() > -1
Así que no sé como estás tan seguro de lo que decís..
Lee lo que dice la javadoc de este método y vas a ver
Yo hago la seleccion de la fila aquí:

Código:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        seleccionado();
        dispose();
}

public Empresa seleccionado(){
        //Connection conexion = null;
        try{
        int idC = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 0);
        String id = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 1);
        String nombre = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 2);
        String fecha = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
        String ciudad = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 4);
        String ca = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 5);
        int edad_minima = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 6);
        int edad_maxima = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 7);
        String sexo = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 8);

        Empresa em = new Empresa(idC, id, nombre, fecha, ciudad, edad_minima, edad_maxima, sexo, ca, null);
        
        return em;

        }catch(Exception e){
            return null;
        }
}
Es que es dificil de explicar. Voy a intentar explicarlo bien.
A ver, yo tengo que insertar en una tabla de una bb.dd 2 datos que son clave primaria. Al ser clave primaria, no puedo insertar una y despues la otra, porque no puede haber una CP(clave primaria) null....el problema esta que los datos que tengo que insertar, estan, en una fila de un jtable de una ventana de mi aplicacion, y en OTRA JTABLE DE OTRA VENTANA DE LA MISMA APLICACION.

Entonces lo que quiero(INTENTO) hacer, es que al seleccionar la fila que ves en el metodo de arriba, guardarme el elemento en mi clase objeto, para luego, cuando seleccione la segunda fila del segundo jtable(cuyo codigo esta tambien en el primer mensaje de este hilo) hacer la inserccion recuperando el dato de mi objeto.

Por eso lo que intento hacer es guardarme la primera fila en Empresa EM, para luego desde la otra clase recuperarlo, desde el metodo
Código:
(private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {...}
Pero claro, cuando hago la llamada a la primera clase del primer jtable para recuperar el objeto, pues hago:
Código:
SeleccionarEm cogerEm = new SeleccionarEm(null, true);
em = cogerEm.seleccionado();
Y me dice null porque no hay nada seleccionado, pero se que no hay nada, pero lo que quiero es recuperar el EM


Como lo puedo hacer?

gracias
  #7 (permalink)  
Antiguo 13/09/2010, 00:56
 
Fecha de Ingreso: julio-2010
Mensajes: 104
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: llamar a objeto desde otra clase

Buenos días,

Posibles soluciones:

Guardas esa fila de la primera ventana al seleccionarla o la fila que tengas seleccionada al abrir la segunda ventana...

1. ... y después llamas al método get de Empresa.

2. ... y cuando realices la llamada a la segunda le pasas Empresa como parámetro y ya manejas esta variable desde tu ventana sin tener que llamar a ningun método de la primera ventana.

Un saludo y buen día.
  #8 (permalink)  
Antiguo 13/09/2010, 02:43
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: llamar a objeto desde otra clase

Gracias ioel, pero no entiendo muy bien lo que quieres decir.
He intentado hacer lo que me has dicho, pero como no lo entiendo muy bien, pues no lo consigo hacer. Es que ese es el problema, que me quiero guardar la primera fila seleccionada, pero no lo consigo, porque siempre que necesito llamar al objeto creado a partir de esa fila, me da null.

Te pongo lo que he intentado hacer ahora:
AQUÍ SELECCIONO LA PRIMERA FILA DE LA PRIMERA VENTANA
Código:
 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        seleccionado();
        dispose();
}
public void seleccionado(){
        InscribirParticipante ip = new InscribirParticipante(null, true);
        Empresa em = new Empresa(0, null, null, null, null, 0, 0, null, null, null);
        try{
        int idC = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 0);
        String id = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 1);
        String nombre = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 2);
        String fecha = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
        String ciudad = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 4);
        String ca = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 5);
        int edad_minima = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 6);
        int edad_maxima = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 7);
        String sexo = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 8);

         em = new Empresa(idC, id, nombre, fecha, ciudad, edad_minima, edad_maxima, sexo, ca, null);
        
        }catch(Exception e){
            System.out.println(e);
        }
         finally{
            ip.recibeEm(em); //Aquí paso a un metodo de la otra clase, la de la ventana 2, el objeto empresa, que es la fila que he seleccionado en la primera ventana. Este es el problema, que no se como pasarla a la otra clase..
        }
}
Y AQUÍ SELECCIONO LA SEGUNDA FILA DE LA SEGUNDA VENTANA Y LUEGO LLAMO A UN METODO PARA HACER LA INSERCCION EN LA TABLE DE LA BB.DD.

Código:
//ESTE PRIMER METODO ES EL ENCARGADO DE SELECCIONAR LA SEGUNDA FILA DE LA SEGUNDA VENTANA DE MI APLICACION.
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        String p = "";
        int id = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 0);
        String nombre = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 1);
        String apellido1 = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 2);
        String apellido2 = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
        int fecha = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 4);
        String sexo = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 5);
        String pais= (String) jTable1.getValueAt(jTable1.getSelectedRow(), 6);
        String comunidad = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 7);
        String em = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 8);
        String dni = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 9);
        int edad = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 10);
        int peso = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 11);
        int ra = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 12);

        Empleado j = new Empleado(id, nombre, apellido1, apellido2, fecha, sexo, pais, comunidad, em, dni, edad, peso, ra);
        Pesos pe = new Pesos(null, true);
        pe.setVisible(true);
        p = pe.devuelvePeso();
       
        insertarParticipa(j);  //Y aquí llamo al metodo que se encargara de insertar en la bb.dd....pero este metodo tambien necesita el un parametro de la primera fila...
}

//Este metodo es el que recibe la fila/empresa seleccionada en la otra tabla, en la primera ventana... me inicializo fuera Empresa porque si lo hago dentro, luego, desde insertarParticipa no puedo acceder a la variable...es que nose como hacerlo.
Empresa em = new Empresa(0, null, null, null, null, 0, 0, null, null, null);
    public Empresa recibeEm(Empresa e){
       em = e;
       return em;
    }

//Y este metodo es el que deberia insertar en la bb.dd...pero el problema es que no tengo manera de conseguir el getNombre de la empresa, porque siempre me da null....no se como pasar el objeto de la otra clase a esta.
public void insertarParticipa(Empleados e){
        Connection conexion = null;
        int i=0;
        int idE = e.getId();
        String nom = cam.getNombre();
        System.out.println(nom); // ME SIGUE DANDO NULL
        try{
           Class.forName("com.mysql.jdbc.Driver");
           conexion = DriverManager.getConnection("jdbc:mysql://localhost/gestion", "root", "xxxx");
           PreparedStatement consulta1 = conexion.prepareStatement("select idC from empresas where nombre='"+nom+"'");
           ResultSet result1 = consulta1.executeQuery();

           while(result1.next()){
               i = result1.getInt(1);
           }

         }catch(Exception e){
            System.out.println("Ocurrio la siguiente excepcion : " + e.toString());
            System.out.close();
        }

        try{
           Class.forName("com.mysql.jdbc.Driver");
           conexion = DriverManager.getConnection("jdbc:mysql://localhost/gestion", "root", "xxxx");
           Statement st = conexion.createStatement();
           st.executeUpdate("INSERT INTO participa (idJ, idC, nombre, resultado, idCategoria) VALUES('"+idE+"', '"+i+"', '"+nom+"', "+null+", "+null+")");

        }catch(Exception e){
            System.out.println("Ocurrio la siguiente excepcion : " + e.toString());
            System.out.close();
        }finally{
            try{if (null != conexion)
                conexion.close();
            }catch(Exception e){
                System.out.println("Ocurrio la siguiente excepcion(2) : " + e.toString());
            }

        }
    }

Ioel10, cuando te refieres a:

Cita:
Guardas esa fila de la primera ventana al seleccionarla o la fila que tengas seleccionada al abrir la segunda ventana...
En principio eso lo hago...me guardo la fila en el objeto "em".
Cita:
1. ... y después llamas al método get de Empresa.
Eso lo hago ya en la segunda clase, pero dice que es null...porque no consigo pasar bien el objeto.

Cita:
2. ... y cuando realices la llamada a la segunda le pasas Empresa como parámetro y ya manejas esta variable desde tu ventana sin tener que llamar a ningun método de la primera ventana.
Ahora si que le paso a la segunda clase el objeto Empresa...pero como accedo al metodo que recibe dicho parametro?


MIL GRACIAS POR ADELANTADO
  #9 (permalink)  
Antiguo 13/09/2010, 04:07
 
Fecha de Ingreso: julio-2010
Mensajes: 104
Antigüedad: 13 años, 9 meses
Puntos: 2
De acuerdo Respuesta: llamar a objeto desde otra clase

Buenos días,

Primero prueba esto:

Código java:
Ver original
  1. //en vez de String nom = cam.getNombre();...
  2. String nom = em.getNombre()
  3. System.out.println(nom); // ME SIGUE DANDO NULL

Y después...

los métodos get y set de Empresa serían del siguiente modo:

set cuando tengas la fila seleccionada en la primera ventana:
Código java:
Ver original
  1. ip.setEmpresa(em);

En la segunda:

Código java:
Ver original
  1. public Empresa em = new Empresa(0, null, null, null, null, 0, 0, null, null, null);

Código java:
Ver original
  1. public void setEmpresa(Empresa em) {
  2.         this.Empresa = em;
  3. }

Código java:
Ver original
  1. public Empresa getEmpresa() {
  2.         return Empresa;
  3. }


Código java:
Ver original
  1. //en vez de String nom = cam.getNombre();...
  2. String nom = this.Empresa.getNombre()
  3. System.out.println(nom); // ME SIGUE DANDO NULL

Un saludo y buen día.
  #10 (permalink)  
Antiguo 13/09/2010, 04:27
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: llamar a objeto desde otra clase

Lo primero que dices, es que lo he copiado yo mal en el codigo, asi que por eso no me falla. Tengo puesto esto:
String nom = em.getNombre()
System.out.println(nom); // ME SIGUE DANDO NULL

Y respecto a lo que me dices, lo he probado y sigue igual, pero hay cosas que creo que me has dicho que estan mal, y que en el codigo me marca como error, pero lo he arreglado.

Cita:
Iniciado por ioel10 Ver Mensaje
Buenos días,


En la segunda:

Código java:
Ver original
  1. public Empresa em = new Empresa(0, null, null, null, null, 0, 0, null, null, null);

Código java:
Ver original
  1. public void setEmpresa(Empresa em) {
  2.         this.Empresa = em;
  3.             }
//querras decir: this.em = em; puesto que Empresa es el objeto y el nombre es em. Si lo pongo como dices me da error

// Este metodo getEmpresa para que lo necesito? cuando lo uso?
Código java:
Ver original
  1. public Empresa getEmpresa() {
  2.         return Empresa;
  3. }


Código java:
Ver original
  1. //en vez de String nom = cam.getNombre();...
  2. String nom = this.Empresa.getNombre()
  3. System.out.println(nom); // ME SIGUE DANDO NULL
// y aqui igual, supongo que querras decir: this.em.getNombre(); pero aun corrigeindo esto, me sigue dando null.

Un saludo y buen día.
He cambiado lo que te he puesto en rojo porque eso me daba error, logico. Pero aun asi...no me funciona :(

EDITO:

Como curiosidad, si pongo un system.out.print en el SETEMPRESA para que muestre el valor de nombre una vez recibido de la primera ventana, si que lo muestra bien. Pero nose porque, cuando estoy en el metodo que necesito ese nombre, me sale null...se ve que la variable de fuera public Empresa em; no lo coge...
  #11 (permalink)  
Antiguo 13/09/2010, 04:43
 
Fecha de Ingreso: julio-2010
Mensajes: 104
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: llamar a objeto desde otra clase

Buenos días,

Me he equivocado con el nombre de la variable has hecho bien en cambiarlos. Los métodos get y set sería más lógico ponerlos en la primera ventana e invocarlos desde la segunda(en este caso tendría sentido el get).

Código java:
Ver original
  1. finally{
  2.     //Aquí prueba ....
  3.     String nom = em.getNombre()
  4.  
  5.     System.out.println(nom);
  6.    
  7.     //yo aquí llamaría a setEmpresa pero no cambia mucho
  8.     ip.recibeEm(em);
  9. }

Si por pantalla te aparece null, adjunta el código completo de tu aplicación para así poder probarlo.

Un saludo y buen día.
  #12 (permalink)  
Antiguo 13/09/2010, 05:06
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: llamar a objeto desde otra clase

He probado a poner el get y el set en la primera ventana, y llamarlo desde la otra pero nada...sigue null.

Te paso las 2 clases por privado, porque no me atrevo de ponerlo por aqui puesto que no es solo mi codigo.

Disculpa, se que lo haces por mi bien y ayudarme pero estoy en el curro ;)

Lo dicho, te lo paso por privado, y la respuesta la puedes hacer en publico si quieres, indicando lo que tengo que cambiar.
  #13 (permalink)  
Antiguo 14/09/2010, 03:52
 
Fecha de Ingreso: mayo-2010
Mensajes: 71
Antigüedad: 13 años, 11 meses
Puntos: 1
Respuesta: llamar a objeto desde otra clase [SOLUCIONADO]

Bueno, pues ya lo he conseguido solucionar con la ayuda del forero Ioel10.

El problema que tenia, era que las 2 clases(ventanas) eran hermanas, es decir, no era una padre de la otra, con lo cual para pasar el objeto se me hacia mas complicado porque no servia pasar el objeto de una clase a la otra.

Lo que he hecho ha sido, poner en la clase SeleccionarEmpresa, unos metodos set y get tal que asi:

Código java:
Ver original
  1. public Empresa em = new Empresa(0, null, null, null, null, 0, 0, null, null, null);
  2.     public void seleccionado(){
  3.  
  4.         try{
  5.         int idC = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 0);
  6.         String id = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 1);
  7.         String nombre = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 2);
  8.         String fecha = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 3);
  9.         String ciudad = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 4);
  10.         String ca = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 5);
  11.         int edad_minima = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 6);
  12.         int edad_maxima = (Integer) jTable1.getValueAt(jTable1.getSelectedRow(), 7);
  13.         String sexo = (String) jTable1.getValueAt(jTable1.getSelectedRow(), 8);
  14.  
  15.         em = new Empresa(idC, id, nombre, fecha, ciudad, edad_minima, edad_maxima, sexo, ca, null);
  16.        
  17.         setEmpresa(em);
  18.         }catch(Exception e){
  19.             System.out.println(e);
  20.         }
  21.     }
  22.    public void setEmpresa(Empresa em) {
  23.         this.em = em;
  24.     }
  25.     public Empresa getEmpresa() {
  26.         return em;
  27.     }

Luego, desde la clase padre de esta, llamo al get para guardarme el objeto:
Código java:
Ver original
  1. public Empresa c = new Empresa(0, null, null, null, null, 0, 0, null, null, null);
  2.     private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  3.         SeleccionarEmpresa se = new SeleccionarEmpresa(null, true);
  4.         se.setVisible(true);
  5.         c = st.getEmpresa();
  6.     }

Y por último, en esta misma clase, en el trozo de codigo encargado de llamar a la otra ventan hija donde esta la segunda tabla, le paso mediante el constructor el objeto Empresa, para luego desde esa clase, poder acceder a los datos como nombre, etc....

Código java:
Ver original
  1. private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
  2.         //JFrame mainFrame = Gestion_campeonatos.getApplication().getMainFrame();
  3.         InscribirParticipante rs = new InscribirParticipante(null, true, c);
  4.         rs.setVisible(true);
  5.     }

Aqui el codigo del constructor de la segunda clase hija y del metodo que hace uso del objeto:

Código java:
Ver original
  1. Empresa empresa = new Empresa(0, null, null, null, null, 0, 0, null, null, null);
  2. public InscribirParticipante(java.awt.Frame parent, boolean modal, Empresa e) { ....
  3. this.empresa = e;
  4. ...
  5. }
  6.  
  7. ....
  8.  
  9. Y ya podemos hacer cuando queramos cosas como, empresa.getNombre();


Gracias a los que me habeis echado un cable.
Tanto FiruzzZ como sobre todo ioel10.

Un saludo a todos y espero no veros pronto por aqui, aunque seguro que en breve tengo mas problemas jajaja.

Etiquetas: clase, llamar, objeto
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:58.