[capturando num lock e caps lock]

Pessoal como faco para mim inserir em uma tela um jlabel que apaga e acende conforme meu num lock e caps lock estiver pressionado?
mtu obrigado

captura o evento de keypressed, testa se o source do evento é uma dessas teclas, e se for monta o jlabel

Veja só suponhamos que eu travei o evento de capturar tecla keyPressed e estou aqui oh

case KeyEvent.VK_NUM_LOCK:
                   //problema aqui
                break;

como faço para ele entender que se tiver presionado num_lock e a luz tiver acesa, aparece a jlabel mais escura no painel e se nao tiver pressionado o jlabel fica cinza !! pode me ajudar? obrigado

Você tem que criar um KeyListener no objeto que vai cuidar para ver se o Caps ou Num esta ativado

e depois pasta verificar no onKeyDown oy no keyReleased assim

 Toolkit tk = Toolkit.getDefaultToolkit();
        try {
            return tk.getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
        } catch (Exception e) {
            return false;
        }

O try catch server para capturar um BUG da API no Linux, que não identifica o estado do teclado.

[]'s

[quote=ken420]Veja só suponhamos que eu travei o evento de capturar tecla keyPressed e estou aqui oh

case KeyEvent.VK_NUM_LOCK:
                   //problema aqui
                break;

como faço para ele entender que se tiver presionado num_lock e a luz tiver acesa, aparece a jlabel mais escura no painel e se nao tiver pressionado o jlabel fica cinza !! pode me ajudar? obrigado[/quote]

Tem o método “getLockingKeyState” da classe Toolkit do AWT:

O resto é com você.

Inté.

eu consegui criar um metodo para capturar o caps lock porem ele so captura no momento que abro a tela aparece o prinln no console mas depois de aberto ele n tem mais ação como faco para ele capturar a todo momento e exibir para mim o println ? abaixo como está

public void CapsLock()
    {
        Toolkit tk = Toolkit.getDefaultToolkit();

        if(tk.getLockingKeyState(KeyEvent.VK_CAPS_LOCK))
            System.out.println("Caps Lock está ativada");
        else
            System.out.println("Caps Lock não está ativada");
    }

up

Ressuscitando o tópico rsrsrsrs, também precisei fazer isso agora em um de nossos sistemas em Swing, a forma que consegui foi a seguinte:
adicionei uma label que informa se o capslock está ativo ou não “lblCaps”, e no textfield “txtSenha” eu adicionei os seguintes eventos:

[code]txtSenha.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
msgCapsLock();
}
});

txtSenha.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
msgCapsLock();
}
});[/code]

e abaixo o método que habilita ou desabilita a label com a mensagem se está ou não com capslock de acordo com a situação do botão CAPSLOCK

private void msgCapsLock() { if (Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)) { lblCaps.setVisible(true); } else { lblCaps.setVisible(false); } }