elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Sobre lectura de varios datos a la vez
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Sobre lectura de varios datos a la vez  (Leído 3,425 veces)
zonahurbana

Desconectado Desconectado

Mensajes: 178

RS, JC.


Ver Perfil WWW
Sobre lectura de varios datos a la vez
« en: 7 Febrero 2014, 00:27 am »

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


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Sobre lectura de varios datos a la vez
« Respuesta #1 en: 7 Febrero 2014, 00:48 am »

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 Desconectado

Mensajes: 178

RS, JC.


Ver Perfil WWW
Re: Sobre lectura de varios datos a la vez
« Respuesta #2 en: 7 Febrero 2014, 01:08 am »

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 Desconectado

Mensajes: 191


Ver Perfil
Re: Sobre lectura de varios datos a la vez
« Respuesta #3 en: 7 Febrero 2014, 11:30 am »

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 Desconectado

Mensajes: 178

RS, JC.


Ver Perfil WWW
Re: Sobre lectura de varios datos a la vez
« Respuesta #4 en: 7 Febrero 2014, 16:28 pm »

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 Desconectado

Mensajes: 29


Ver Perfil
Re: Sobre lectura de varios datos a la vez
« Respuesta #5 en: 7 Febrero 2014, 18:34 pm »

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 Desconectado

Mensajes: 1.186


Ver Perfil
Re: Sobre lectura de varios datos a la vez
« Respuesta #6 en: 7 Febrero 2014, 19:06 pm »

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á.

Código
  1. package ehn;
  2.  
  3. /**
  4.  * @author 1mpuls0
  5.  */
  6.  
  7. public class Example extends javax.swing.JFrame {
  8.  
  9.    private javax.swing.JTextField jTextField1;
  10.  
  11.    public static void main(String args[]) {
  12.        new Example().setVisible(true);
  13.    }
  14.  
  15.    public Example() {
  16.        initComponents();
  17.    }
  18.  
  19.    private void initComponents() {
  20.  
  21.        jTextField1 = new javax.swing.JTextField();
  22.        /*IMPORTANTE*/
  23.        setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
  24.  
  25.        /*IMPORTANTE*/
  26.        addWindowListener(new java.awt.event.WindowAdapter() {
  27.            public void windowClosing(java.awt.event.WindowEvent evt) {
  28.                formWindowClosing(evt);
  29.            }
  30.        });
  31.  
  32.  
  33.        getContentPane().setLayout(new java.awt.FlowLayout());
  34.  
  35.        jTextField1.setPreferredSize(new java.awt.Dimension(100, 20));
  36.        getContentPane().add(jTextField1);
  37.  
  38.        pack();
  39.    }
  40.  
  41. private void formWindowClosing(java.awt.event.WindowEvent evt) {
  42.    String var = jTextField1.getText().toString().trim();
  43.    if(var.equals("")) {
  44.        javax.swing.JOptionPane.showMessageDialog(null, "Existen campos vacios");
  45.    }else {
  46.        this.setVisible(false);
  47.    }
  48.  
  49. }
  50.  
  51. }
  52.  
« Última modificación: 3 Septiembre 2015, 18:30 pm por 1mpuls0 » En línea

abc
zonahurbana

Desconectado Desconectado

Mensajes: 178

RS, JC.


Ver Perfil WWW
Re: Sobre lectura de varios datos a la vez
« Respuesta #7 en: 7 Febrero 2014, 19:58 pm »

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 Desconectado

Mensajes: 191


Ver Perfil
Re: Sobre lectura de varios datos a la vez
« Respuesta #8 en: 3 Marzo 2014, 12:56 pm »

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 Desconectado

Mensajes: 191


Ver Perfil
Re: Sobre lectura de varios datos a la vez
« Respuesta #9 en: 3 Marzo 2014, 13:04 pm »

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:

Código
  1. String camposFormulario [] = MiDialogo.mostrar();
  2. String nombre = camposFormulario[0];
  3. String apellido1 = camposFormulario[1];
  4. String apellido2 = camposFormulario[2];
  5. String edad = camposFormulario[3];
  6.  

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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda con lectura y escritura de datos.ser
Java
Toryas 7 4,318 Último mensaje 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,627 Último mensaje 4 Febrero 2014, 08:47 am
por camilo_
Problema lectura de datos
Programación C/C++
Ockdatone 3 1,780 Último mensaje 11 Febrero 2014, 13:51 pm
por eferion
Error en lectura de datos con String y Int
Java
Chentul 1 1,545 Último mensaje 4 Mayo 2014, 10:46 am
por Zoik
ayuda lectura de datos
Programación C/C++
fvpg 3 1,855 Último mensaje 2 Mayo 2018, 03:55 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines