Agora, como verificar mesmo que a janela principal esteja desativada. Tenho uma JLabel para mostrar ON ou OFF quero que ela mude ao precionar caps mesmo que a janela principal estega minimizada ou desativada, assim como acontece no Delphi (Pascal).
Você precisa registrar dois listeners na sua janela principal:
FocusListener - toda vez que o usuário alternara para outra janela de outro programa e voltar, você verifica o status da tecla CAPSLOCK e atualiza na sua janela
KeyListener - toda vez qeu o usuário apertar uma tecla, você verifica e atualiza o status na sua janela
Se o KeyListener não funcionar, pode usar o AWTEventListener, registrando-o no toolkit da seguinte forma:
Onde meuListener é a instância da implementação de AWTEventListener. Este tipo de listener (AWTEventListener) ouve todos os eventos que acontecem na sua aplicação, não importando qual janela esteja selecionada. Se for o caso de sua aplicação ter mais de uma janela.
O parceiro já sim mas o tipo primitivo não afeta quando se usa na mesma classe.[/quote]
Sim entendo eu imaginei que você chamaria isso em outra tela ou seja outra classe como por exemplo tivesse na texa x e pressionasse o botao e alterasse a y
Já que os listeners não deram certo para você (rolaram umas mensagens privadas aqui pessoal), então você vai ter que usar uma thread como o leonardobhbr disse:
Uma thread que verifique o estado da tecla de tempos em tempos e controlar o ciclo de vida dela. Algo do tipo:
public class VerificadorCapsLock extends Thread {
private boolean parar = false;
public void parar() {
parar = true;
}
public void run () {
while (! parar) {
// coloca o código do seu método aqui
try {
Thread.sleep(100); // dorme por 100 milisegundos
} catch (InterruptedException ie) {
}
}
}
}
Depois em algum lugar na inicialização da sua aplicação:
VerificadorCapsLock verificador = new VerificadorCapsLock();
verificador.start();
Blz parcerada, é isso ai, fiz alguns ajustes para adaptar na minha aplicação e ficou show, maravilha, o caminho é esse mesmo eu tava misturando acesso nativo com Java. Valeu galera.