Ola pessoal
[color=red]gostaria de saber como eu faço para executar um botao de um programa apertando a tecla enter[/color]
tem haver com Keylistener ??
desde ja agradeço.
Ola pessoal
[color=red]gostaria de saber como eu faço para executar um botao de um programa apertando a tecla enter[/color]
tem haver com Keylistener ??
desde ja agradeço.
Dá pra implementar com KeyListener.
Vc sabe trabalhar com esse tipo de evento ?
vc poderia me mostrar como eu faço isso ???
[code]/*
Este exemplo mostra como escrever uma classe
que implementa a interface KeyListener.
*/
import javax.swing.;
import java.awt.;
import java.awt.event.*;
public class Estudos extends JFrame{
public Estudos() {
super(“Eventos do Mouse e Teclado”);
Container c = getContentPane();
FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
c.setLayout(layout);
Teclado teclado = new Teclado();
this.addKeyListener(teclado);
setSize(350, 250);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
/*
Classe auxiliar usada para obter eventos do
teclado. Como esta classe implementa a interface
KeyListener, ela deverá fornecer implementações para
os métodos keyPressed, keyReleased e keyTyped
*/
class Teclado implements KeyListener{
public void keyPressed(KeyEvent e){
JOptionPane.showMessageDialog(null,
“Uma tecla foi pressionada!”);
}
public void keyReleased(KeyEvent e){
// código aqui
}
public void keyTyped(KeyEvent e){
// código aqui
}
}
[/code]
Referência : http://www.arquivodecodigos.net/dicas/java-escrevendo-uma-classe-que-implementa-a-interface-keylistener-1100.html
sim
mas com esse exemplo acontece com todas as teclas sendo pressionadas, eu ostaria apenas que a tecla enter fosse pressionada
mas ja ajuda bastante.
grato
[quote=Thiago Paulista]sim
mas com esse exemplo acontece com todas as teclas sendo pressionadas, eu ostaria apenas que a tecla enter fosse pressionada
mas ja ajuda bastante.
grato[/quote]
[code]bt_sair = new JButton("Fechar");
frame.getContentPane().add(bt_sair);
bt_sair.setBounds(215, 115, 75, 25);
bt_sair.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
// açao do botao aqui
}
} );[/code]
Crie uma classe que implementa ActionListener e KeyListener (de preferencia uma classe interna…) e adicione-o como um ouvidor de eventos do botão com os métodos addActionListener(ActionListener a) e addKeyListener(KeyListener k) do botao.
Ou seja, vc vai fazer algo como:
Jbutton btn = new JButton("Botão");
EscravoDoBotao sempreAtento = new EscravoDoBotao();
btn.addKeyListener(sempreAtento);
btn.addActionListener(sempreAtento);
Onde a classe EscravoDoBotao é a classe que consegue ouvir os eventos criados pelo teclado e pelo clique.
class EscravoDoBotao implements KeyListener , ActionListener{
public void keyPressed(KeyEvent arg0) {
//Código executado quando o botão é pressionado
}
public void keyReleased(KeyEvent k) {
k.getKeyCode();
}
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
public void actionPerformed(ActionEvent arg0) {
this.executaBotao();
}
private void executaBotao(){
//Código referente as ações esperadas do botão
}
}
Em um dos 3 métodos que escutam os eventos do teclado vc vai ver se a tecla digitada é igual a tecla ENTER, se for, vc chama o método executaBotao()
Sabe como usar o objeto KeyEvent para descobrir a tecla ?
Use o KeyListener para definir botões sobre um componente específico. Se você precisar que esse botão seja ativado em componente há alternativas melhores, mais fáceis de programar e mais seguras:
getRootPane().setDefaultButton(botao);
Esse botão ficará marcado com uma cor mais forte, indicando que é o padrão. Pressionar enter em qualquer campo irá aciona-lo.
Se você tem uma série de botões, que precisam ser acionados pelas teclas (como os botões de uma calculadora), então melhor usar essa estratégia aqui:
http://www.guj.com.br/posts/list/140986.java
Se você tem um botão para ser acionado com uma tecla em conjunto com o ALT, é melhor então usar o método setMnemonic:
botaoSalvar.setMnemonic(KeyEvent.VK_S); //Aciona o botão salvar com ALT+S
O KeyListener costuma a ser a pior alternativa. Primeiro, porque ele deve ser definido em absolutamente todos os campos. Depois, que é fácil esquece-lo quando um campo novo surge. E, por último, o código gerado por ele é complexo e rebuscado. Use-o apenas quando você quiser fazer uma ação específica para um único componente.
Não tenho certeza, mas acho que o caracter gerado pelo botão Enter é o \n
Se eu estiver certo, vc pode inserir
if(k.getKeyChar() == '\n'){ //Se a tecla pressionada for igual a '\n'
this.executaBotao();
}
ao método que escolher (o de pressionar, o de soltar ou o de digitar)