Foros del Web » Programación » Java »

¿pasar datos entre JFrame?

Estas en el tema de ¿pasar datos entre JFrame? en el foro de Java en Foros del Web. Tengo esto: 1) Un JFrame (frame1) que tiene un JTextField (txt1) y un JButton (btn1) 2) Al hacer click en btn1 lanza otro JFrame (frame2) ...
  #1 (permalink)  
Antiguo 25/10/2005, 12:27
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 12 años, 8 meses
Puntos: 3
¿pasar datos entre JFrame?

Tengo esto:

1) Un JFrame (frame1) que tiene un JTextField (txt1) y un JButton (btn1)
2) Al hacer click en btn1 lanza otro JFrame (frame2)
3) frame2 está conformado por una JList (list2) y un JButton (btn2)
4) Entonces ahora me surge el problema. Necesito que al hacer click en btn2 tome la selección de list2 y la muestre en el txt1 de frame1. ¿cómo diablos hago esto?, todo bien hasta la selección pero no logro presentar el resultado en el txt del otro JFrame. ¿Necesitaré utilizar otro componente en vez de JFrame, algo así como JInternalFrame o JDialog?, ¿es posible la comunicación entre JFrame?
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #2 (permalink)  
Antiguo 26/10/2005, 02:06
 
Fecha de Ingreso: mayo-2004
Mensajes: 85
Antigüedad: 10 años, 4 meses
Puntos: 1
Al crear el jFrame2, lo que deberías pasarle en el constructor el jFrame1 para jugar con él.

Prueba de esta forma:
__________________________________________________ _______
public class jFrame1 extends javax.swing.JFrame{

protected JTextField txt1;
private JButton btn1;

//en el click del button1 creas el jFrame2 asi:
btn1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jFrame2 jframe2 = new jFrame2(this);
jframe2.setVisible(true);
}
});


.....

}


public class jFrame2 extends javax.swing.JFrame{

protected JList list2;
private JFrame jframe1;

//contructor del jframe2
public jFrame2(JFrame jframe1){
this.jframe1=jframe1;
}

...
//ahora ya puedes acceder al jframe1
jframe1.txt1.setText("hooolaaa");
.....

}
__________________________________________________ __________

Seguro que hay mas formas de hacerlo.. héchale un vistazo.

salu2!
  #3 (permalink)  
Antiguo 26/10/2005, 23:07
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 12 años, 8 meses
Puntos: 3
Muchas gracias, lo probaré.
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #4 (permalink)  
Antiguo 09/03/2009, 11:54
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 475
Antigüedad: 6 años, 7 meses
Puntos: 1
Respuesta: ¿pasar datos entre JFrame?

Cita:
Iniciado por ferblaca Ver Mensaje
Al crear el jFrame2, lo que deberías pasarle en el constructor el jFrame1 para jugar con él.

Prueba de esta forma:
__________________________________________________ _______
public class jFrame1 extends javax.swing.JFrame{

protected JTextField txt1;
private JButton btn1;

//en el click del button1 creas el jFrame2 asi:
btn1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jFrame2 jframe2 = new jFrame2(this);
jframe2.setVisible(true);
}
});


.....

}


public class jFrame2 extends javax.swing.JFrame{

protected JList list2;
private JFrame jframe1;

//contructor del jframe2
public jFrame2(JFrame jframe1){
this.jframe1=jframe1;
}

...
//ahora ya puedes acceder al jframe1
jframe1.txt1.setText("hooolaaa");
.....

}
__________________________________________________ __________

Seguro que hay mas formas de hacerlo.. héchale un vistazo.

salu2!

Estoy intentando hacer lo mismo, pero en mi caso, si pongo jframe1. no me aparece la lista de componentes, como si fuesen privados o algo asi... y no me dejase acceder. ¿como lo arreglo?
  #5 (permalink)  
Antiguo 09/03/2009, 12:33
Avatar de HenrydeSousa  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 300
Antigüedad: 10 años
Puntos: 2
Respuesta: ¿pasar datos entre JFrame?

Yo creo que lo que puedes hacer en este caso es crear dos métodos get y set, por ejemplo getNombre() y setNombre(), luego haces el set en el formulario en cuestón, y ya estando en el formulario desde el cual quieres leer el valor accedes al método get de tu form2, obviamente el método get tiene que ser público, bueno esta es mi opinión.


Saludos...
  #6 (permalink)  
Antiguo 09/03/2009, 12:40
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 475
Antigüedad: 6 años, 7 meses
Puntos: 1
Respuesta: ¿pasar datos entre JFrame?

Cita:
Iniciado por HenrydeSousa Ver Mensaje
creo que lo que puedes hacer en este caso es crear dos métodos get y set
Gracias por tu ayuda. Lo he probado y nada, la función tampoco me aprece y la he declarado como public.

He probado directamente a definir el textfield como public y nada, tampoco es visible

¿que esta pasando?
  #7 (permalink)  
Antiguo 09/03/2009, 15:43
Avatar de djagu_26  
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 518
Antigüedad: 6 años, 8 meses
Puntos: 6
Respuesta: ¿pasar datos entre JFrame?

Hola lo logico es llevarse la instancia en el constructor del JFrame como dice jorgegetafe, es lo mas prolijo desde el punto de vista de la programacion, y luego en el constructor igualarlo a un Jframe del mismo tipo declarado.

jorgegetafe: porq declaras el textfield protected??? prueba usando private.

saludos
  #8 (permalink)  
Antiguo 09/03/2009, 16:30
Usuario no validado
 
Fecha de Ingreso: julio-2008
Ubicación: Quito
Mensajes: 76
Antigüedad: 6 años, 2 meses
Puntos: 2
Respuesta: ¿pasar datos entre JFrame?

Hola sabes yo utilice este codigo pero no me funciona, estoy queriendo hacer lo mismo pero no puedo... por favor si alguien tiene el codigo me puede ayuda???
Gracias.
Leo
  #9 (permalink)  
Antiguo 09/03/2009, 20:40
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 119
Antigüedad: 6 años, 6 meses
Puntos: 1
Respuesta: ¿pasar datos entre JFrame?

Pamio este metodo es un poco largo bueno hay varias maneras para hacer lo que quieres una de esa es tener una interfaz dejame mostrarte

Código PHP:

public interface escuchaTexto{

public 
void miTextoSeleccionado(String elTextoDeLaListaaa);

/* como podras ver tenemos nuestro metodo que le pasamos un parametro
en tu caso al momento que ejecutas tu evento de seleccionar le pasas este parametro/*
/*
ahora esta clase al ser una interfaz que nos permite simular la "herencia multiple"
en tu caso puedo hacer que varias clases hereren este metodo que implementa esta clase, pero como hacemos para que la clase conoscan a esta interfaz ?
*/

como ya tenemos nuestra interfaz ahora creamos las dos clases

Código PHP:
public class clase2{



//declaramos una escucha para que ?ya lo veras
private escuchaTexto escucha;


public 
clase2(){}


public 
void addEscuchaTexto(escuchaTexto parametroDeEscucha){
this.escucha parametroDeEscucha;
}

/*
addEscuchaTexto() se te hace familiar ? no es el mismo metodo que implementan
las clases ActionListener,etc para que un objeto reconosca su evento ? solo que ha este le pasamos un texto

esta clase que estoy haciendo es como si fuera tu form2 por que va a trabajar mandando los cambios para que otra clase o varias clases las escuchen

ahora  sorpresa falta un metodo para almacenar la variable de la seleccion de tu lista o de cualquier String? pero ya la tenemos como hemos declararo un objeto EscuchaTexto "escucha" podemos usar su metodo 
*/
// algo asi creamos un metodo privado 
private void textoSeleccionado(){
String dato leerElTexto();// cualquier get que nos devuelva un String
// en tu caso el de la lista
escucha.miTextoSeleccionado(dato);
}
/*
ahora tu puedes llamar este metodo que crees en un evento click JButton
o seleccion o cuando hagas click en el boton cerrar de tu formulario modal 
"form2" en tu caso
*/


ahora la clase1

Código PHP:
public class clase2 implements escuchaTexto{

public 
clase2() {
/* por ejemplo aca 
y ya tenemos esta clase en escucha
*/
this.addEscuchaTexto(this);

}

/*
ahora a esta clase va hacer la que implemente la interfaz escuchaTexto()
para que ? para usar su metodo obligado ya que es una interfaz  y tenemos que implementar todos sus metodos de esa interface
*/
public void miTextoSeleccionado(String elTextoDeLaListaaa){
//en tu caso 
txtTexto.setText(elTextoDeLaListaaa);
// puedes hacer validaciones si el parametro esta vacio o no y otras cosas
}

/*
huy no te recuerda ?  a 
public void actionPerformed(ActionEvent evt){}
*/

/*
 mmm pero falta algo no como establecemos la escucha para ver los cambios ?
si esta clase es la que implementa la interfaz no crees que es la que tiene que agregar el metodo huy y ya tenemos implementada la interfaz ?
public void addEscuchaTexto(escuchaTexto parametroDeEscucha)
este metodo lo agregas en tu constructor de form1 
*/ 
Bueno ojala me entiendan por que ni yo se lo que hexo ahora por que te digo que hagas con interface pues para que aprendas a usarlas tarde o temprano las vas a usar y esta es una bonita manera de saber como funcionan
ojala te ayude px man
y como tengo tanto tiempo por eso me tome la molestia de explicar maso horrible de como funcionan aunque no soy un experto ni nada
solo soy un estudiante como todos px
bueno

bytes.
  #10 (permalink)  
Antiguo 10/03/2009, 15:51
 
Fecha de Ingreso: febrero-2008
Ubicación: Madrid
Mensajes: 475
Antigüedad: 6 años, 7 meses
Puntos: 1
Respuesta: ¿pasar datos entre JFrame?

No se el motivo, pero si pasaba el formulario entero no me funcionaba y si pasaba el JTexfield va de lujo
  #11 (permalink)  
Antiguo 30/04/2011, 09:19
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 3 años, 4 meses
Puntos: 0
Respuesta: ¿pasar datos entre JFrame?

Amigo, lo que tienes que hacer es declarar los componentes de tu JFrame con privilegios de tipo PUBLIC y luego hacer referencia al nombre de tu JFrame "." y el nombre del componente. Por ejemplo

Form1 (nombre de mi JFrame)
public javax.swing.JTextField txtTexto;

Form2 (nombre del segundo JFrame)

Form1.txtTexto.getText();

Espero te sirva, yo hago eso siempre que necesito los valores de un componente que se encuentra en otro JFrame o para acceder a los valores de los objetos que fueron creados y construidos en otro.

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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 01:23.
SEO by vBSEO 3.3.2