Java - Problemas al Enviar Datos de Frame a Otro

 
Vista:
Imágen de perfil de Franklin Parra
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al Enviar Datos de Frame a Otro

Publicado por Franklin Parra (179 intervenciones) el 25/09/2019 21:46:57
Buenas tardes estimados, tengo un problema con el comportamiento de un jTextField en Java.

En esencia quiero hacer: en mi frame principal ingresar los datos de un cliente, pero para saber el DNI de esta persona abro otro Frame para filtrar por nombres en un jTable, al encontrar el indicado; lo selecciono y envio ese DNI a mi frame Principal en un JtextField.

Resumiendo, En mi Frame Princial quiero recibir en un JTextField el DNI encontrando en JFrame Secuendario.

Para esto hago lo siguiente:
en mi Frame Principal el jTextField es Public.

En mi Frame Secundario:

1
2
3
4
5
6
jFramePrincipal p = new jFramePrincipal ();
 
p.jTextField.setText(DNIOBTENIDO);
p.repaint();
p.revalidate();
frameSecundario.dispose();

He mostrado en pantalla el valor del jTextField y me manda el valor, pero visualmente este no se actualiza en pantalla.


Algún apoyo?
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
Imágen de perfil de pablo
Val: 626
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al Enviar Datos de Frame a Otro

Publicado por pablo (239 intervenciones) el 25/09/2019 22:46:55
Buenas qué tal Franklin pues mira no domino mucho el tema de GUIs pero lo que te puedo decir es que puedes probar de la siguiente manera:


1
p.jTextfield.setText(p2.getText().toString());

Esto suponiendo que p es la pantalla en la que quieres mostrar y p2 la table de donde obtienes lo que necesitas.
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
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al Enviar Datos de Frame a Otro

Publicado por Franklin (179 intervenciones) el 25/09/2019 23:19:59
Pablo... si he probado lo que me comentas, de esa forma asigno el valor del jTxtField del Frame principal estando desde el otro y efectivamente el "valor se asigna", pero el jTxtField no muestra el valor; puedo saber que se le ha asignado el valor porque lo imprimo y se muestra.

Quizás no me doy a entender. El jTextField si imprimo su valor tras asignarlo, este si muestra su valor, pero visualmente no lo hace.
La única forma que tiene de mostrarse es abriendo una nueva ventana, Es decir, cierro el FramePrincipal, y tras obtener mi Valor vuelvo abrirlo y alli si se visualiza.

Opción que no he implementado porque si cierro mi FramePrincipal una vez hayan ingresado por ejemplo un 80% de los datos, estos se pierden una vez cerrada
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
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al Enviar Datos de Frame a Otro

Publicado por Lawliet (303 intervenciones) el 26/09/2019 02:34:40
Espero esto sea lo que necesitas, amigo!!!

Frame UNO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package com.home.gui;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
public class VentanaUno {
 
	private JFrame frmUno;
	private JTextField textUno;
	private JButton button;
 
	public VentanaUno() {
		initialize();
	}
 
	private void initialize() {
		frmUno = new JFrame();
		frmUno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmUno.setSize(500, 100);
		frmUno.setLocationRelativeTo(null);
		frmUno.setTitle("Frame UNO");
 
		textUno = new JTextField(20);
 
		button = new JButton("Ingresar");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				VentanaDos ventanaDos = new VentanaDos(textUno.getText());
				frmUno.dispose();
				ventanaDos.frmDos.setVisible(true);
			}
		});
 
		JPanel panel = new JPanel();
		panel.add(textUno);
		panel.add(button);
 
		frmUno.getContentPane().add(panel);
	}
 
	public static void main(String[] args) {
		VentanaUno ventana = new VentanaUno();
		ventana.frmUno.setVisible(true);
	}
}

Frame DOS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.home.gui;
 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
 
public class VentanaDos {
 
	public JFrame frmDos;
	private JTextField textDos;
 
	private String valor;
 
	public VentanaDos(String valor) {
		this.valor = valor;
		initialize();
	}
 
	private void initialize() {
		frmDos = new JFrame();
		frmDos.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmDos.setSize(500, 100);
		frmDos.setLocationRelativeTo(null);
		frmDos.setTitle("Frame DOS");
 
		textDos = new JTextField(20);
 
		JPanel panel = new JPanel();
		panel.add(textDos);
 
		frmDos.getContentPane().add(panel);
 
		textDos.setText(getValor());
	}
 
	public String getValor() {
		return valor;
	}
 
	public void setValor(String valor) {
		this.valor = valor;
	}
}

Fue algo muy rápido que hice pero es completamente funcional, lo que pones en el campo uno del formulario uno, se envía y se visualiza sin problemas en el segundo formulario.

Sin más que comentar, quedo al pendiente de cualquier duda y/o comentario.

Saludos!
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
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al Enviar Datos de Frame a Otro

Publicado por Franklin (179 intervenciones) el 14/10/2019 14:40:52
Lo probaré y te comento los resultados, gracias :D.
Aunque lo que sucede es lo siguiente, cuando envió los datos mediante un ".setText..." por ejemplo. no tengo problemas cuando viene seguido de un Frame.setVisible(true), porque al iniciar la ventana con este dato previo; este se muestra sin problemas.


mi problema es cuando, desde mi Frame1 consulto algún dato en mi Frame2 y es enviado de regreso sin Cerrar en ningun momento mi Frame1.

Frame1 Abre Fram2 para consultar datos
Frame2 toma el dato y lo envia a un jTextField(por ejemplo) en Frame1
Frame2 lo cierro(dispose)
Frame1/jTextField (repaint,revalidate,validate, etc)

Nunca se visualiza el valor enviado( y me refiero a visualizar) si por ejemplo yo utilizo un boton para imprimir el valor de ese jTextField, lo imprime sin problemas, pero no se visualiza. He leido que obligatoriamente se debe usar repaint(), pero no me ha funcionado.
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
Imágen de perfil de Franklin
Val: 456
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problemas al Enviar Datos de Frame a Otro

Publicado por Franklin (179 intervenciones) el 15/10/2019 20:04:08
[SOLUCIONADO] Por semanas estuve buscando y buscando por la red hasta que por fin di con la respuesta.

Yo normalmente usaba lo siguiente (basándome en el mismo contexto de 2 Forms )

(En el Form2)

Form1 f1 = new Form1();
f1.jTextField.setText("TEXTO");

por lo que "obviamente" al crear una nueva instancia, este no se visualizaba a menos de usar "f1.setVisible(true)"

[LO CORRECTO]

sin necesidad de usar " Form1 f1 = new Form1(); "

solo debo asignar el valor como -> Form1.jTextField.setText("Texto");

El jTextField debe estar definido como Public y Static.


Gracias por su colaboración, quizás es algo super sonso para el 2019 pero bueno :/ Gracias igual
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar