[capturando num lock e caps lock]

7 respostas
K

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

7 Respostas

A

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

K

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

F

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

K

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

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

O resto é com você.

Inté.

K

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");
    }
K

up

T

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:

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

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);
	}
}
Criado 23 de fevereiro de 2009
Ultima resposta 12 de mai. de 2014
Respostas 7
Participantes 5