Olá,
Estou desenvolvendo um sistema e nele possui uma Frente de Caixa, portanto preciso pegar os eventos do teclado, como: F1, F2, e por ai vai…
Já testei os seguintes códigos:
Primeiro Código:
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(new KeyEventDispatcher() {
public boolean dispatchKeyEvent(KeyEvent e) {
boolean keyHandled = false;
if (e.getID() == KeyEvent.KEY_PRESSED) {
}
return keyHandled;
}
});
Segundo Código:
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
public void eventDispatched(AWTEvent event) {
KeyEvent keyEvent = (KeyEvent) event;
if (keyEvent.getID() == KeyEvent.KEY_RELEASED
&& keyEvent.getKeyCode() == KeyEvent.VK_ESCAPE) {
System.out.println("ESC");
}
}
}, AWTEvent.KEY_EVENT_MASK);
Os dois códigos estão funcionando OK, porém há um problema… Uma vez executado um dos dois códigos, ele vai ativar o evento para todos os jFrames, jDialog ou seja, todo o sistema.
Quando eu pressiono uma tecla em outra janela ele chama aquela referente há Frente de Caixa.
Este seria o meu problema… como deixar os eventos do teclado somente na Frente de Caixa?
Ou finalizar/bloquear os eventos quando mudo de tela?