• Lunes 29 de Abril de 2024, 08:18

Autor Tema:  Duda Con Jbutton  (Leído 3078 veces)

ropel

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Duda Con Jbutton
« en: Martes 22 de Abril de 2008, 23:19 »
0
Hola,

Me ha surgido una duda que quisiera saber si tiene o no solución para la finalidad que le quiero proporcionar a mi programa. Yo tengo una pequeña ventana inicial, donde el usuario se loguea y demás. Cada vez que quiero acceder y pongo el user y pass, tengo que darle click sobre el botón loguear.

Mi idea es que solamente dando a la tecla INTRO, se pueda acceder al programa como usuario registrado, sin necesidad de usar el ratón para nada. ¿Cómo puedo hacer esto? ¿Existe la posibilidad de realizarlo?

Supongo que habrá alguna manera, pero no he encontrado respuesta por la red y estoy un poco interesado por el tema, en saber cómo se puede llevar a cabo.

Espero alguna respuesta que me pueda echar una mano. De todas maneras, gracias de antemano.

Saludos a todos.

frealgagu

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
    • http://frealgagu.4shared.com
Re: Duda Con Jbutton
« Respuesta #1 en: Martes 22 de Abril de 2008, 23:48 »
0
Si está utilizando Frame, sencillamente con el método action()
es decir:
Código: Text
  1.  
  2. public boolean action(Event e, Object o)
  3. {
  4.   if(e.target==boton)
  5.   {
  6.     //Procedimiento del Boton
  7.   }
  8.   if(e.target==cajaTexto)
  9.   {
  10.      //El mismo procedimiento que utiliza con el botón
  11.   }
  12. }
  13.  
  14.  

También puede ser de muchas formas, dependiendo de como esté construyendo su aplicación.


ropel

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Duda Con Jbutton
« Respuesta #2 en: Miércoles 23 de Abril de 2008, 13:15 »
0
Frealgagu, gracias por tu ayuda, pero no entiendo muy bien qué se hace en ese método ni dónde debo colocarlo, ni a qué se refiere con boton o cajaTexto. Si pudieras ser un poco más explícito por favor, soy nuevo en esto y entiendo poco sobre el tema, con lo que me gustaría me pudieras guiar un poco más profundamente.

De todas maneras, gracias nuevamente por tu respuesta. Saludos a todos.

frealgagu

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
    • http://frealgagu.4shared.com
Re: Duda Con Jbutton
« Respuesta #3 en: Jueves 24 de Abril de 2008, 02:40 »
0
Ok, que le parece si me muestra el código que tiene hasta el momento para así saber exactamente que es lo que está necesitando, ya que es más fácil dar una solución si se conoce el caso específico donde se aplica.


ropel

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Duda Con Jbutton
« Respuesta #4 en: Jueves 24 de Abril de 2008, 18:25 »
0
Bueno, veamos pues.... Hasta ahora lo que tengo implementado es un JFrame, en el cual tengo un JDialog con 2 cajas de texto y 2 botones. En esas cajas de texto pido el login y pass de la persona que va a acceder al sistema, y los botones son ACEPTAR y CANCELAR respectivamente.

Para el botón ACEPTAR tengo un evento asociado, que ejecuta su código cuando se pulsa sobre el botón, y lo mismo para el botón CANCELAR, haciendo cosas diferentes evidentemente.

Lo tengo así:

Código: Text
  1.    
  2. private void aceptarMouseClicked(java.awt.event.MouseEvent evt) {                                    
  3.  
  4. .........................El código que sea
  5.  
  6. }
  7.  
  8. private void cancelMouseClicked(java.awt.event.MouseEvent evt) {                                    
  9.  
  10. .........................El código que sea
  11.  
  12. }
  13.  
  14.  

No te muestro el código de dentro porque es muy grande y además es irrelevante para lo que estoy buscando aquí. Con esto, evidentemente también tengo la función init del JFrame y demás, y el método main.

Teniendo esto, ¿cómo puedo hacer para que dandole a INTRO directamente el usuario se valide, como si le diera al botón ACEPTAR? Es lo que pretendo, de modo que sea más fácil para el usuario manejar el sistema. Vamos, siendo más concretos, mi idea sería mantener seleccionado el botón ACEPTAR, de forma que al pulsar INTRO sea como si hubiera hecho click sobre tal botón (tal y como hace Windows cuando te muestra un mensaje, que te marca un botón y pulsando INTRO hace la acción relacionada con éste). He probado a usar un método del propio botón, que lo selecciona, creo que se llama selected o algo así, pero no me funciona.

Espero haberme explicado adecuadamente, ya que no encuentro solución alguna al respecto y necesito avanzar en mi tarea. Gracias de antemano y un saludo a todos.

frealgagu

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
    • http://frealgagu.4shared.com
Re: Duda Con Jbutton
« Respuesta #5 en: Viernes 25 de Abril de 2008, 02:17 »
0
Si usted se fija en Windows cuando usted está escribiendo los botones que hay en esa pantalla no están marcados, es decir que cuando usted le da Enter no va al evento del Botón sino que es independiente y va al evento del control que está utilizando en este caso puede ser un JTextField, lo que quiere decir que se activa el evento pero del JTextField no del Botón.
Para implementar el evento dentro del JTextField se utiliza la interfaz KeyListener.
Ejemplo:
Código: Text
  1.  
  2.  
  3. JTextField cajaTexto=new JTexField("");
  4. cajaTexto.addKeyListener(/* *** */);
  5.  
  6.  
  7.  
***Dentro de addKeyListener va una instancia de KeyListener que pude ser utilizado con una clase auxiliar que implemente la Interface KeyListener o tambien puede ser desde la misma clase si le manda el parámetro this.

Ejemplo1:
Código: Text
  1.  
  2. public class ClasePrincipal implements KeyListener
  3. {
  4.   public ClasePrincipal()
  5.   {
  6.     JTextField cajaTexto=new JTexField("");
  7.     cajaTexto.addKeyListener(this);
  8.   }
  9.   /*Luego a continuación se implementan los métodos de KeyListener que son:*/
  10.   public void keyPressed(){/*Entra aqui cuando una tecla es presionada*/}
  11.   public void keyReleased(){/*Entra cuando una tecla es soltada*/}
  12.   public void keyTyped(){/*No me acuerdo que hace*/}
  13. }
  14.  
  15.  
Ejemplo2:
Código: Text
  1.  
  2. public class ClasePrincipal
  3. {
  4.   public ClasePrincipal()
  5.   {
  6.     JTextField cajaTexto=new JTexField("");
  7.     cajaTexto.addKeyListener(new ClaseAuxiliar());
  8.   }
  9. }
  10. class ClaseAuxiliar implements KeyListener
  11. {
  12.   /*Luego a continuación se implementan los métodos de KeyListener que son:*/
  13.   public void keyPressed(){/*Entra aqui cuando una tecla es presionada*/}
  14.   public void keyReleased(){/*Entra cuando una tecla es soltada*/}
  15.   public void keyTyped(){/*No me acuerdo que hace*/}
  16. }
  17.  
  18.  
Ejemplo3:
Código: Text
  1.  
  2. public class ClasePrincipal implements KeyListener
  3. {
  4.   public ClasePrincipal()
  5.   {
  6.     JTextField cajaTexto=new JTexField("");
  7.     cajaTexto.addKeyListener
  8.     (
  9.       new KeyListener()
  10.       {
  11.         /*Luego a continuación se implementan los métodos de KeyListener que son:*/
  12.         public void keyPressed(){/*Entra aqui cuando una tecla es presionada*/}
  13.         public void keyReleased(){/*Entra cuando una tecla es soltada*/}
  14.         public void keyTyped(){/*No me acuerdo que hace*/}
  15.       }
  16.     );
  17.   }
  18. }
  19.  
  20.  
Recuerde que los métodos de la clase KeyListener reciben KeyEvent.
La forma de implementar keyPressed es :
Código: Text
  1.  
  2. public void keyPressed(KeyEvent e)
  3. {
  4.   if(evt.getKeyCode()==KeyEvent.VK_ENTER)
  5.   {
  6.      //Aquí coloca el mismo codigo que utiliza en el evento del Boton aceptar
  7.   }
  8. }
  9.  
  10.  

Espero Haber sido claro en el procedimiento.
Este código además sirve para mostrar la implementación de los eventos de las tres formas posibles.


ropel

  • Miembro activo
  • **
  • Mensajes: 32
    • Ver Perfil
Re: Duda Con Jbutton
« Respuesta #6 en: Viernes 25 de Abril de 2008, 12:06 »
0
Lo acabo de probar lo que me has sugerido Frealgagu y me funciona a la perfección. Gracias por tu ayuda. Solamente una cosa más como duda final, he puesto dentro del método keyPressed() una llamada al siguiente método:

Código: Text
  1.  
  2. boton.doClick();
  3.  
  4.  

Pero no me hace realmente el código asociado al evento del botón. Lo he solucionado colocando ese código en un método al que llaman tanto desde el keyPressed como desde el evento del botón, pero no sé a qué se debe que no funcione.

De todas maneras, muchas gracias por todo de nuevo.

frealgagu

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
    • http://frealgagu.4shared.com
Re: Duda Con Jbutton
« Respuesta #7 en: Domingo 27 de Abril de 2008, 02:27 »
0
Los metodos asociados a los eventos de los componentes en Java, sólo pueden ser llamados mediante un evento que les corresponda y no pueden ser llamados directamente desde otra función, lo mejor es crear un método aparte y llamarlo desde cada uno de los eventos que sea requerido.


kurofire

  • Nuevo Miembro
  • *
  • Mensajes: 13
    • Ver Perfil
Re: Duda Con Jbutton
« Respuesta #8 en: Miércoles 18 de Junio de 2008, 14:15 »
0
Io creo q hubiera sido mejor un actionlistener para la caja de texto asi al presionar intro ingresarias son solo sugerencias mias y cuestion de gustos =)