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

Duda Eventos a teclas F1, F2, F3, etc

Estas en el tema de Duda Eventos a teclas F1, F2, F3, etc en el foro de Java en Foros del Web. Bueno me estoy iniciando en Swing y quisiera hacer lo siguiente... tengo un botón que al ser presionado cierra el frame Código: public void actionPerformed(ActionEvent ...
  #1 (permalink)  
Antiguo 17/11/2011, 17:47
 
Fecha de Ingreso: junio-2011
Mensajes: 289
Antigüedad: 12 años, 10 meses
Puntos: 15
Duda Eventos a teclas F1, F2, F3, etc

Bueno me estoy iniciando en Swing y quisiera hacer lo siguiente... tengo un botón que al ser presionado cierra el frame

Código:
public void actionPerformed(ActionEvent e) {
        if (e.getSource()==BotonEscape) {
            System.exit(0);
        }
    }
Lo que necesito es un código que al apretar la tecla F1 haga automáticamente ese evento, o si creo un botón de imprimir, que al apretar el F2 imprima automáticamente

Es para comodidad crear estos atajos de teclado, es decir, que si presiono el boton o F1 realize la misma accion. Logre hacerlo con otras teclas pero con estas "Especiales" no.


Encontré este código

Código:
import java.awt.*;
import java.applet.Applet;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class asdasdasd extends Applet {
    
Label lb1;
TextField t1;

public void init () {
t1 = new TextField(20);
add(t1);

lb1 = new Label(" ");
add(lb1);

t1.addKeyListener(new KeyListener() {
    int perro = 10;
char caracter;
String cadena;
public void keyTyped(KeyEvent eve) {
caracter = eve.getKeyChar();
cadena = String.valueOf(caracter);
lb1.setText(cadena);
}

public void keyPressed(KeyEvent eve) {
if (eve.getKeyCode() == KeyEvent.VK_ALT){
cadena = "alt";}

if (eve.getKeyCode() == KeyEvent.VK_F1)
cadena = "F1";
if (eve.getKeyCode() == KeyEvent.VK_F2)
cadena = "F2";
lb1.setText(cadena);


}

public void keyReleased(KeyEvent eve) {}
});
}
}

El problema es que debe ir si o si el textfield para que pueda leer la tecla.... alguien me podria ayudar?
  #2 (permalink)  
Antiguo 19/11/2011, 06:54
 
Fecha de Ingreso: noviembre-2010
Ubicación: Tandil
Mensajes: 79
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Duda Eventos a teclas F1, F2, F3, etc

Hola, ZedGe1505. La forma que encontré yo de solucionarlo es la siguiente: a todos los componentes del JFrame/JInternalFrame le defino el método keyPressed (desde el diseño, clic derecho en cada componente, Eventos -> Key -> keyPressed y en ese evento le digo lo siguiente:

Código Javascript:
Ver original
  1. private void codigoKeyPressed(java.awt.event.KeyEvent evt) {
  2.         teclaPresionada(evt.getKeyCode());
  3. }

y en el metodo teclaPresionada() me fijo que tecla presionó. Si presionó F1...

Código Javascript:
Ver original
  1. private void teclaPresionada(int tecla) {
  2.         if (tecla == KeyEvent.VK_F1)
  3.             cerrar();
  4. }

Por otro lado, desde el diseño, hacemos clic derecho en el botón con el que queremos cerrar y le damos a "Seleccionar acción..." Creamos una acción nueva llamada cerrar y ahí definimos lo que debe hacer el método cerrar().

Otra forma más sencilla es no hacer lo primero de teclaPresionada y hacemos sólo esto último, lo de "Seleccionar acción..." y en la opción Atributos -> Acelerador -> Letra presionamos la tecla F1 y ya le asigna esa tecla a esa acción. Por este último camino tuve algunos inconvenientes normales de Java, pero no deja de ser un camino fiable.

Suerte.

Etiquetas: eventos, string, teclas
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 16:22.