Verificar estado das Teclas LOCK

Pessoa já sei como verificar se as telcas Lock estão ativadas:
Ex.:

private void CapsNumScroll() {
        //CapsLock da BarraStatus
        Toolkit tk = Toolkit.getDefaultToolkit();

        if(tk.getLockingKeyState(KeyEvent.VK_CAPS_LOCK))
            jlblCapsLock.setText("LIG");
        else
            jlblCapsLock.setText("DES");
    }

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).

já tentou utilizar

espero ter ajudado

:wink:

Crie uma Thread para isso de uma estuda sobre thread

[quote=AlissonSchneider]já tentou utilizar

espero ter ajudado

;)[/quote]

O parceiro já sim mas o tipo primitivo não afeta quando se usa na mesma classe.

Puts parceiro, me de um exemplo dessa tal de thread

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:
Toolkit.getDefaultToolkit().addAWTEventListener(meuListener, AWTEvent.KEY_EVENT_MASK);

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.

[quote=denirroberto][quote=AlissonSchneider]já tentou utilizar

espero ter ajudado

;)[/quote]

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

abrass

:wink:

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();

E quando sua aplicação estiver sendo fechada:

verificador.parar();

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.