Foros del Web » Programación para mayores de 30 ;) » Java »

Como saber en que elemento (textfield,boton,...) se ha pulsado una tecla???

Estas en el tema de Como saber en que elemento (textfield,boton,...) se ha pulsado una tecla??? en el foro de Java en Foros del Web. Hola a todos, tengo una pantalla donde tengo varios textfiled y me gustaria saber en cual de ellos se ha pulsado ENTER. Con getKeyCode() compruevo ...
  #1 (permalink)  
Antiguo 26/10/2006, 08:43
 
Fecha de Ingreso: noviembre-2002
Mensajes: 273
Antigüedad: 21 años, 5 meses
Puntos: 0
Como saber en que elemento (textfield,boton,...) se ha pulsado una tecla???

Hola a todos,

tengo una pantalla donde tengo varios textfiled y me gustaria saber en cual de ellos se ha pulsado ENTER.

Con getKeyCode() compruevo si se ha pulsado ENTER, pero, como puedo saber de que elemento viene?

Pasaría lo mismo teniendo 2 botones de 'OK' en la misma pantalla.

Como diferenciar de donde viene el KeyEvent ó el ActionEvent?

Muchas gracias,
Mickeyzgz
  #2 (permalink)  
Antiguo 26/10/2006, 10:54
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
private jtNombre = new JTextField();
private jtDireccion = new JTextField();

...

Y en el método en que capturas el evento comparas así:

if( e.getSource() == this.jtNombre )
{
...
}



Salu2
  #3 (permalink)  
Antiguo 26/10/2006, 23:20
 
Fecha de Ingreso: octubre-2006
Mensajes: 2
Antigüedad: 17 años, 6 meses
Puntos: 0
es lo mismo con los JButton

Cita:
Iniciado por MikiBroki Ver Mensaje
private jtNombre = new JTextField();
private jtDireccion = new JTextField();

...

Y en el método en que capturas el evento comparas así:

if( e.getSource() == this.jtNombre )
{
...
}



Salu2
al igual que con los JTextField que con loa JButton

private ok1= new JButton();
private ok2= new JButton();
.
.
.
if( e.getSource() == this.ok2 )
{
.
.
.
}
  #4 (permalink)  
Antiguo 27/10/2006, 02:26
 
Fecha de Ingreso: noviembre-2002
Mensajes: 273
Antigüedad: 21 años, 5 meses
Puntos: 0
Muchas gracias por vuestra respuesta.

Para el JTextField me funciona bien el código, pero para el JButton me da una excepción al pulsarlo con el ratón:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Os pongo la estructura del programa por si veis algún error:

class Manejador implements ListSelectionListener,KeyListener,ActionListener, Runnable
{
//variables
............................................
//JTextFields
JTextField txtSearch;
JTextField code;

//JButtons
JButton enterCode;

............................................

public void CodeAccess()//en este metodo dibujo una pantalla
{
newFrame = new JFrame("Enter Code Access - OK");

.................................................. .....

code = new JTextField(10);//creo JTextField
code.addActionListener(this);//añado escuchador a campo
enterCode = new JButton("<HTML><FONT FACE = ARIAL SIZE = 2><B>Enter Code");//creo JButton
enterCode.addActionListener(this);//añado escuchador a boton

.................................................. ......


public void actionPerformed(ActionEvent ae)//metodo donde trato los eventos
{

if (ae.getSource()==this.code) {//Identify the field
JOptionPane.showMessageDialog(newFrame,"Has pulsado INTRO en el campo code", "Enter Code", JOptionPane.INFORMATION_MESSAGE);
}
else if (ae.getSource()==this.enterCode){//Identify the button
JOptionPane.showMessageDialog(newFrame,"Has pulsado el botón enterCode", "Enter Code", JOptionPane.INFORMATION_MESSAGE);
}

.................................................. .............

Pues con esto con el JTextField funciona y con el JButton no.

Tienen un comportamiento diferente?
Que puede ocurrir?

Muchas gracias,
Mickeyzgz
  #5 (permalink)  
Antiguo 27/10/2006, 06:40
 
Fecha de Ingreso: noviembre-2002
Mensajes: 273
Antigüedad: 21 años, 5 meses
Puntos: 0
Ya está.

Lo he movido al keyPressed y funciona bien:

public void keyPressed(KeyEvent evt) {

int key = evt.getKeyCode(); // keyboard code for the key that was pressed

if (enterCode == evt.getSource() ) {
JOptionPane.showMessageDialog(newFrame,"SE HA PULSADO LA TECLA 'F1' EN EL BOTON", "Data check", JOptionPane.INFORMATION_MESSAGE);
}

else if (evt.getSource() == code ) {
JOptionPane.showMessageDialog(newFrame,"SE HA PULSADO LA TECLA 'F1' EN EL JTEXTFIELD", "Data check", JOptionPane.INFORMATION_MESSAGE);
}

Espero que os sirva.

Saludos,
Mickeyzgz
  #6 (permalink)  
Antiguo 27/10/2006, 07:12
 
Fecha de Ingreso: abril-2002
Mensajes: 1.014
Antigüedad: 22 años
Puntos: 8
no recuerdo bien ahora pero si hay un keyReleased (al soltar la tecla) sería mejor, pues si la mantienen pulsada...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:06.