Evento de teclado...
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
Curtidas 0
Respostas
Ironlynx
09/04/2009
Use um KeyEvent!Não esquecendo de adicionar seu componente a um
KeyListener... :wink:
Exemplo:
Esse trecho é para transferir o foco qdo for teclado ENTER!
vc deve implementar a interface KeyListener e adicionar seus componentes tipo TextField.addKeyListener(this);
//---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;
}
}GOSTEI 0
Moretto
09/04/2009
Valeu pela dica, estou começando agora com java... estou meio perdido...
obrigado...
[ ]s
Moretto
GOSTEI 0
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
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
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