Evento de teclado...

Java

09/04/2009

Ola galera!!! como faço pra tratar um evento do teclado?.... tipo pressionar uma tecla e executar alguma coisa? abraços a todos [ ]s
Moretto

Moretto

Curtidas 0

Respostas

Ironlynx

Ironlynx

09/04/2009

Use um KeyEvent!Não esquecendo de adicionar seu componente a um KeyListener... :wink: Exemplo:
//---Eventos do teclado
   public void keyTyped(KeyEvent ke){
         }
   public void keyReleased(KeyEvent ke){
  	 }
   public void keyPressed(KeyEvent ke){
  	if(ke.getKeyCode() == ke.VK_ENTER){ 
           componente = (Component) ke.getSource(); 
           componente.transferFocus();
           componente=null;  
       }  
           	                          }
Esse trecho é para transferir o foco qdo for teclado ENTER! vc deve implementar a interface KeyListener e adicionar seus componentes tipo TextField.addKeyListener(this);
GOSTEI 0
Moretto

Moretto

09/04/2009

Valeu pela dica, estou começando agora com java... estou meio perdido... obrigado... [ ]s Moretto
GOSTEI 0
Moretto

Moretto

09/04/2009

Ichhiiii não funcionou.... estou implementando desta maneira... criei um objeto JLabel com o nome de lSair dentro da classe Cliente, o objetivo era qdo clicar em f9 sair do sistema.... sera que pode me ajudar? segue abaixo o código que fiz: lSair.addKeyListener(new java.awt.event.KeyAdapter(){ public void keyPressed(java.awt.event.KeyEvent ek){ if(ek.getKeyCode() == ek.VK_F9){ JOptionPane.showConfirmDialog(null,"Deseja Sair Realmente?","Atenção",1); } } }); Moretto
GOSTEI 0
Hsn

Hsn

09/04/2009

Acho que o problema aqui é que seu label não tá com foco... Isto é, ele não esta selecionado. Mas tenho uma pergunta: por que você pôs o JLabel para escutar eventos? Eu geralmente ponho minha classe principal, geralmente um JFrame quando uso GUI, para escutar eventos de teclado. Fora isso, seu código parece correto, com dois problemas: 1) o método [b]showConfirmDialog()[/b] retorna um [b]int[/b] dizendo qual opção foi escolhida, que você não está guardando. Seu código apenas mostra uma janela de confirmação, que fecha após você apertar um botão qualquer, sem fazer nada. 2) No último parâmetro do [b]showConfirmDialog()[/b], a idéia de passar um [b]int[/b] é dizer quais botões de confirmação você quer, SIM/NÃO ou SIM/NÃO/CANCELAR. Para isso, você deve passar uma das constantes [b]JOptionPane.YES_NO_OPTION,[/b] ou [b]JOptionPane.YES_NO_CANCEL_OPTION[/b]. Dica: leia sempre a [url=http://java.sun.com/j2se/1.4.2/docs/api/index.html]documentação[/url] da classe que você quer usar. Está tudo lá: quais métodos e campos você consegue acessar, o que a classe faz, o quê os métodos fazem, que parâmetros esperam... Enfim, tudo que você precisa saber. Sim, está em inglês, mas praticamente tudo de útil nesta área vai estar, então inglês acaba se tornando pré-requisito para programar. Seu código ficaria mais ou menos assim:
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class MinhaJanela extends JFrame implements KeyListener {
    public MinhaJanela() {
        // adicionando os componentes
        // ...

        // ele é seu próprio escutador de eventos
        addKeyListener(this);

        // essa linha serve só para encerrar o JVM quando você fecha a 
        // janela
        getDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        // ajustando o tamanho da janela com valores quaisquer
        setSize(640, 480);
        
        // tornando a janela visível
        setVisible(true);
    }

    // executando minha classe
    public static void main(String[] args) {
        new MinhaJanela();
    }

    public void keyPressed(KeyEvent ek){
        // VK_F9 é uma constante estática. Não faz diferença para o 
        // compilador usar ek ou KeyEvent, mas só para ser preciso
        if(ek.getKeyCode() == KeyEvent.VK_F9){ 
            // passando this em vez de null, a janelinha vai aparecer no 
            // centro da minha janela principal
            int selectedOption = JOptionPane.showConfirmDialog(this, "Deseja Sair Realmente?", "Atenção", JOptionPane.YES_NO_OPTION);
        
            // se o cara escolheu YES, fecha a aplicação
            if(selectedOption == JOptionPane.YES_OPTION) {
                // libera os recursos da janela
                dispose();

                // encerra a execução da JVM
                System.exit(0);
            }
            // se o cara escolheu NO, não faça nada
        } 
    } 

    // só para manter o compilador feliz
    public void keyTyped(KeyEvent ek) { }
    public void keyReleased(KeyEvent ek) { }
 
} // fim da classe
GOSTEI 0
Moretto

Moretto

09/04/2009

Seguinte.... estava usando um label porque estava tentanto trata-lo como fiz com o evento do mouse....rs... menuSair1.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent e) { } }); enfim vou seguir seus conselhos... e tentar usar a documentação, muito obrigado pela força... [ ]s Moretto
GOSTEI 0
POSTAR