Autor
|
Tema: Sobre lectura de varios datos a la vez (Leído 3,689 veces)
|
zonahurbana
Desconectado
Mensajes: 178
RS, JC.
|
El método showInputDialog de JOptionPane permite leer un único dato. Si son varios usualmente uso un bucle, pero quiero leer datos de a pares porque están relacionados. Y si se lee por separado, podría confundir al usuario. Estaba creando una clase que herede JFrame y pregunte todas las preguntas que yo le indique, es decir, presente varios JLabel y JTextField según la cantidad de preguntas. El punto es que, no sé cómo hacer para que devuelva los datos leídos luego de presionar un botón que incluí en el mismo JFrame hacia otro programa que también se está ejecutando y se encargó de crearlo :S
|
|
|
En línea
|
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
|
|
|
egyware
|
Si usas un JTextField puedes obtener los datos utilizando la función getText, como por ejemplo String valor1 = jTextField1.getText(); Si usas algún ide, te recomiendo que renombres las variables para que tengas una idea clara de lo que haces. Saludos!
|
|
|
En línea
|
|
|
|
zonahurbana
Desconectado
Mensajes: 178
RS, JC.
|
Sí, sé cómo tomar los datos de los JTextField, pero no sé cómo enviar esos datos al JFrame principal. Tengo una clase principal que extiende de JFrame, y desde ésta quiero leer datos usando otra ventana. Por lo tanto, muestro esa ventana y un botón, pero el botón no es capaz de devolver esos datos, ya que el evento es del tipo void. No sé cómo hacer que se comuniquen las ventanas...
|
|
« Última modificación: 7 Febrero 2014, 03:04 am por zonahurbana »
|
En línea
|
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
|
|
|
ThinkByYourself
Desconectado
Mensajes: 191
|
Puedes crear una clase que se ocupe de abrir una ventana y que con algún método que se ejecute cuando se le dé click a algún botón de la ventana, lo que te retorne sea un objeto de alguna otra clase que contenga la información que necesites. Esa información se la pasas al objeto que llamó a esa segunda ventana (que imagino era otra ventana), a la par que cierras esa segunda ventana, y ya tendrás la información facilitada por la segunda ventana en la primera ventana u objeto. Es sencillo, pero tienes que tener claro los conceptos de la POO.
|
|
|
En línea
|
No te voy a engañar. Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.
|
|
|
zonahurbana
Desconectado
Mensajes: 178
RS, JC.
|
Por fin pude hacerlo. Gracias de todos modos.
Y tengo una pregunta adicional: Quisiera que salte una advertencia cuando el usuario trata de cerrar la ventana secundaria (la que es de lectura) si es que no ha rellenado los campos.
¿Cómo puedo hacerlo? Porque si uso windowClosing me parece que ejecutará código pero al final se cerrará.
|
|
|
En línea
|
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
|
|
|
trolleoatodos
Desconectado
Mensajes: 29
|
La chapuza qu se me ocurre , es (si se puede) poner la frame en undecorated, luego hacer un "servicio" (Thread) que verifique cada segundo si los campos son diferentes d null ,y si es así ¡pam! poner a la ventana normal, si no se puede ,ya tienes algo con lo que experimentar
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
Por fin pude hacerlo. Gracias de todos modos.
Y tengo una pregunta adicional: Quisiera que salte una advertencia cuando el usuario trata de cerrar la ventana secundaria (la que es de lectura) si es que no ha rellenado los campos.
¿Cómo puedo hacerlo? Porque si uso windowClosing me parece que ejecutará código pero al final se cerrará.
package ehn; /** * @author 1mpuls0 */ public class Example extends javax. swing. JFrame { public static void main (String args []) { new Example().setVisible(true); } public Example() { initComponents(); } private void initComponents() { /*IMPORTANTE*/ /*IMPORTANTE*/ public void windowClosing (java. awt. event. WindowEvent evt ) { formWindowClosing(evt); } }); getContentPane (). setLayout(new java. awt. FlowLayout()); jTextField1. setPreferredSize(new java. awt. Dimension(100, 20)); getContentPane().add(jTextField1); pack(); } private void formWindowClosing (java. awt. event. WindowEvent evt ) { String var = jTextField1. getText(). toString(). trim(); if(var.equals("")) { javax. swing. JOptionPane. showMessageDialog(null, "Existen campos vacios"); }else { this.setVisible(false); } } }
|
|
« Última modificación: 3 Septiembre 2015, 18:30 pm por 1mpuls0 »
|
En línea
|
abc
|
|
|
zonahurbana
Desconectado
Mensajes: 178
RS, JC.
|
Muchas gracias por responder.
Antes estaba haciendo que la clase lectora implemente WindowListener, y tenía que sobreescribir todos los métodos abstractos. Si sólo sobreescribía windowClosing me daba error. Veo que usted usa WindowAdapter, que es en sí una clase y no una interface, por lo que es posible sobreescribir sólo el evento deseado.
He probado a usar windowClosing sin poner el DO_NOTHING_ON_CLOSE y el JDialog muestra el mensaje pero al instante se cierra. Pero ahora, configurándolo, funciona perfectamente.
Gracias nuevamente.
PD: En un inicio no me funcionaba nada de nada, es decir, el evento windowClosing jamás se ejecutaba. Y la razón era que el addWindowListener estaba luego de hacer pack(); setVisible(true); Lo mismo me pasó antes con el addActionListener de un botón. Es muy extraño.
|
|
|
En línea
|
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...
|
|
|
ThinkByYourself
Desconectado
Mensajes: 191
|
Buen código! No supe ver la verdadera dificultad de la pregunta, y hoy me preguntaba cómo se haría realmente. Con el código de Darhius queda mucho más claro qué se puede hacer para conseguirlo! Gracias foreros!
|
|
|
En línea
|
No te voy a engañar. Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.
|
|
|
ThinkByYourself
Desconectado
Mensajes: 191
|
Aunque no me queda claro. Pensaba que lo que quería conseguirse era un método estático externo que te permitiera llamar a la creación de la ventana/diálogo, y que cuando se clicara el botón "Aceptar" que el método terminara y pudiera cogerse algún valor concreto que se extrae del formulario. Pensaré cómo hacerlo bien y postearé lo que consiga para adaptarlo a un cómodo: String camposFormulario [] = MiDialogo. mostrar(); String nombre = camposFormulario [0]; String apellido1 = camposFormulario [1]; String apellido2 = camposFormulario [2]; String edad = camposFormulario [3];
Si puede ser, sin demasiado lío de threads y familiares, pero veré a ver...
|
|
|
En línea
|
No te voy a engañar. Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayuda con lectura y escritura de datos.ser
Java
|
Toryas
|
7
|
4,561
|
3 Noviembre 2007, 15:32 pm
por marioly
|
|
|
foto lectura, y lectura veloz, scanning y otros metodos de lectura rapida....
Foro Libre
|
Kase
|
3
|
12,953
|
4 Febrero 2014, 08:47 am
por camilo_
|
|
|
Problema lectura de datos
Programación C/C++
|
Ockdatone
|
3
|
2,013
|
11 Febrero 2014, 13:51 pm
por eferion
|
|
|
Error en lectura de datos con String y Int
Java
|
Chentul
|
1
|
1,713
|
4 Mayo 2014, 10:46 am
por Zoik
|
|
|
ayuda lectura de datos
Programación C/C++
|
fvpg
|
3
|
2,117
|
2 Mayo 2018, 03:55 am
por engel lex
|
|