Captura utilizando KeyAdapter

2 respostas
C

Pessoal,
Alguém pode me explicar como funciona, a captura de eventos por teclado utilizando KeyAdapter?
Para cada, evento capturado por teclado será necessário a criação de um novo método?
public void keyTyped(KeyEvent e) {
teclado_keyTyped(e);
}
Agradeço a todos...

Trajano

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ExemploSair extends JFrame implements ActionListener {
    private JButton botaoSair;
    
    public ExemploSair(String title) {
        super(title);
        botaoSair = new JButton("Sair");
        botaoSair.setToolTipText("Clique para sair");
        botaoSair.addActionListener(this);
        //A chamada desde método esta correta?
        botaoSair.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                teclado_keyTyped(e);
            }
        });}
    
    private void criaMostraGUI() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(2, 1));
        JLabel label = new JLabel("Clique no botão para sair.");
        JPanel panel = new JPanel();
        panel.add(label);
        getContentPane().add(panel);
        JPanel panel2 = new JPanel();
        panel2.add(botaoSair);
        getContentPane().add(panel2);
        setLocation(300, 300);
        pack();
        setVisible(true);
    }
    //Eventos do teclado
    public void teclado_keyTyped(KeyEvent e) {
        if (e.getSource() == botaoSair) {
            System.exit(0);
        }
    }
    //Eventos do Mouse
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == botaoSair) {
            System.exit(0);
        }
    }
    public static void main(String[] args) {
        ExemploSair exemploSair = new ExemploSair("Exemplo Sair");
        exemploSair.criaMostraGUI();
    }
}

2 Respostas

Wolf_X

mano, tada vez q eu preciso usar evento do teclado eu faço uma classe protected q implementa KeyListener e ali sim eu manipulo td ai depois eh soh eu adicionar um listener onde eu quero. fica bem generico, tipo assim:

public void teclado_keyTyped(KeyEvent e) {   
        if (e.getSource() == botaoSair) {   
            System.exit(0);   
        }   
    }

oq exatamente vc quis fazer aqui ???
se for algo do tipo (qdo clicar com o ENTER em cima do botao sair feichar o programa) vc poderia ter usado o actionlistener mesmo.

C

Wolf,
Antes de mais nada agradeço pela ajuda.
Na realidade tenho um projeto acadêmico, "calculadora" onde vou ter;
9 botões com addActionListenere e keyTyped para captura, a inserção de dados por teclado.
A parte do mouse utilizando ActionListenere, eu já consegui desenvolver a lógica..Já como capturar o evento do teclado não estou conseguindo mesmo. Para cada botão eu tenho de fazer um novo método?
Ou não é necessário?
Agradeço

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ExemploSair extends JFrame implements ActionListener {
    private JButton jBt1,jBt2;
    
    public ExemploSair(String title) {
        super(title);
        jBt1 = new JButton("Bt1");
        jBt1.setToolTipText("Bt1");
        jBt1.addActionListener(this);
        jBt2 = new JButton("jBt2");
        jBt2.setToolTipText("jBt2");
        jBt2.addActionListener(this);
        
    }
    
    private void criaMostraGUI() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new GridLayout(2, 1));
        JLabel label = new JLabel("Classe Teste!");
        JPanel panel = new JPanel();
        panel.add(label);
        getContentPane().add(panel);
        JPanel panel2 = new JPanel();
        panel2.add(jBt1);
        panel2.add(jBt2);
        getContentPane().add(panel2);
        setLocation(300, 300);
        pack();
        setVisible(true);
    }
    //Eventos do teclado
    public void teclado_keyTyped(KeyEvent e) {
        if (e.getSource() == jBt1) {
            //Como faço para vincular, uma tecla por ex; 1 acionar este médoto?
            System.out.println("Teclado jBt1!");
        }
        if (e.getSource() == jBt2) {
            //Como faço para vincular, uma tecla por ex; 2 acionar este médoto?
            System.out.println("Teclado jBt2!");
        }
    }
    
    //Eventos do Mouse
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jBt1) {
            System.out.println("Mouse jBt1");
        }
        if (e.getSource() == jBt2) {
            System.out.println("Mouse jBt2");
        }
    }
    public static void main(String[] args) {
        ExemploSair exemploSair = new ExemploSair("Exemplo Sair");
        exemploSair.criaMostraGUI();
    }
}
Criado 1 de outubro de 2007
Ultima resposta 1 de out. de 2007
Respostas 2
Participantes 2