Captura de teclas na aplicação inteira

9 respostas
TheKill

Fala turma,

A dúvida é a seguinte, alguem tem uma idéia ou solução
para conseguir implementar um tipo de actionListener capaz de
capturar em qualquer parte do sistema uma determinada tecla?

por exemplo se eu pressionar F6 seja na classe Principal ou
na ultima tela possível baixo nivel da aplicação e ele executar a mesma ação.
Seja exemplo abrir outra tela dizendo CONSEGUI --’

Agradeço atenção de todos o/

9 Respostas

G

faz uma classe Util com essa action e bota todas as classes pra herdar ela sera que naoo daria certo?

TheKill

Acho que isso seria uma solução baixo nível, qndo nao se tem outra alternativa hehe, mas nao deixa de ser uma idéia… valeu :slight_smile:

G

eu sei mas não tive outra ideia, pois nunca precisei usar isso, pois de toda forma você teria que implementar o action em todas as janelas, ou senão você ja tentou sobrescrever o metodo Jframe caso seja uma aplicação desk?

Alexandre_Saudate
-> Superclasse contendo a chamada da instalação do listener (mais recomendado);

-> AOP (intercepta toda criação de frames, instalando o listener);

-> Instrumentação + Anotações (intercepta toda criação de frames, antes de subir o sistema, fazendo a instalação).

-> Um hook para capturar as teclas, usando, por exemplo, SWT.

[]´s

P.S: Se você quer alguma coisa de bem baixo nível, considere qualquer uma das três últimas.

TheKill
KeyEventDispatcher key = new KeyEventDispatcher() {
			
			@Override
			public boolean dispatchKeyEvent(KeyEvent e) {
				if(e.getKeyCode()==KeyEvent.VK_F2){
					System.out.println("evento ocorrreu imediatamente");
					Mensagem.alerta("DEU CERTO");
					return true;
				}else{
				return false;
				}
			}
		};
		KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(key);
TheKill

Problema:

Ele executa 2 vezes o mesmo evento.

Solução:

Alguem tem idéia?

G

vc fez a herança? pois pode ta executando do frame principal e do novo frame que abri =)

TheKill

pode ser isso

G

da um focus na frame que abri e ve se ocorre dinovo o erro

Criado 24 de agosto de 2010
Ultima resposta 24 de ago. de 2010
Respostas 9
Participantes 3