Programación General > Java

 Duda Con Jbutton

<< < (2/2)

frealgagu:
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 ---  JTextField cajaTexto=new JTexField(&#34;&#34;);cajaTexto.addKeyListener(/* *** */);   ***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 --- public class ClasePrincipal implements KeyListener{  public ClasePrincipal()  {    JTextField cajaTexto=new JTexField(&#34;&#34;);    cajaTexto.addKeyListener(this);  }  /*Luego a continuación se implementan los métodos de KeyListener que son:*/  public void keyPressed(){/*Entra aqui cuando una tecla es presionada*/}  public void keyReleased(){/*Entra cuando una tecla es soltada*/}  public void keyTyped(){/*No me acuerdo que hace*/}}  Ejemplo2:

--- Código: Text --- public class ClasePrincipal{  public ClasePrincipal()  {    JTextField cajaTexto=new JTexField(&#34;&#34;);    cajaTexto.addKeyListener(new ClaseAuxiliar());  }}class ClaseAuxiliar implements KeyListener{  /*Luego a continuación se implementan los métodos de KeyListener que son:*/  public void keyPressed(){/*Entra aqui cuando una tecla es presionada*/}  public void keyReleased(){/*Entra cuando una tecla es soltada*/}  public void keyTyped(){/*No me acuerdo que hace*/}}  Ejemplo3:

--- Código: Text --- public class ClasePrincipal implements KeyListener{  public ClasePrincipal()  {    JTextField cajaTexto=new JTexField(&#34;&#34;);    cajaTexto.addKeyListener    (      new KeyListener()      {        /*Luego a continuación se implementan los métodos de KeyListener que son:*/        public void keyPressed(){/*Entra aqui cuando una tecla es presionada*/}        public void keyReleased(){/*Entra cuando una tecla es soltada*/}        public void keyTyped(){/*No me acuerdo que hace*/}      }    );  }}  Recuerde que los métodos de la clase KeyListener reciben KeyEvent.
La forma de implementar keyPressed es :

--- Código: Text --- public void keyPressed(KeyEvent e){  if(evt.getKeyCode()==KeyEvent.VK_ENTER)  {     //Aquí coloca el mismo codigo que utiliza en el evento del Boton aceptar  }}  
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:
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 --- boton.doClick();  
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:
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:
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 =)

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa