Para capturar teclado, é necessário, adicionar KeyEventListener em todos os componentes?

5 respostas
java
J

Para capturar o teclado, é necessário, adicionar KeyEventListener em todos os componentes? Por exemplo, eu quero que com [ESC] o meu programa feche. Eu preciso adicionar em todos os botões,etc.?

5 Respostas

Jonas_B_a_r_r_o_s

So ao JFrame

Jonas_B_a_r_r_o_s

Um ex:

package GUI;

import java.awt.Label;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;

public class KeyDemoFrame extends JFrame implements KeyListener {
	
	//construtor KeyDemoFrame
	public KeyDemoFrame() {
		super("Demonstração de eventos de teclas");
                JFrame frame = new JFrame();
                frame.setSize(300,300);
                Label label = new Label();
                label.setText("Pressione ESC para sair");
                frame.add(label);
                frame.setVisible(true);
                frame.addKeyListener(this); 
	}
	
	//trata pressionamento de qualquer tecla, faz o teste, pressione outras teclas, vai aparecer no console, nas no caso coloquei apenas ESC, que tem valor 27 para sair
        @Override
	public void keyPressed(KeyEvent event) {
		System.out.println(String.format("Tecla pressionada: %s",KeyEvent.getKeyText(event.getKeyCode()))); //mostra a tecla pressionada
                if(event.getKeyChar()==27) //fecha a tela com ESC
                System.exit(0); 
	}
        
        @Override
        public void keyTyped(KeyEvent e) { //estou implementando KeyListener. Necessario esse metodo aqui, mesmo sem corpo
        }

        @Override
        public void keyReleased(KeyEvent e) { //estou implementando KeyListener. Necessario esse metodo aqui, mesmo sem corpo
    }
        
        
        public static void main(String[] args) {
          new KeyDemoFrame();
    }
}
J

É que em um programa que eu fiz, isso não funcionou. E como adiciona código à resposta?

Jonas_B_a_r_r_o_s

Não funcionou, porque você não fez direito

Dragoon

Calma amigo @Jonas_B_a_r_r_o_s, paciência é um grande mérito.

Porque não o indagou qual foi o erro? @Joao_Gabrielaaj, Qual foi o erro do código, o que não funcionou, seja bem claro nas suas duvidas e se o amigo postou o código, geralmente funciona!

Esperamos o seu aguardo…

Criado 18 de julho de 2016
Ultima resposta 24 de jul. de 2016
Respostas 5
Participantes 3