[Resolvido] Dificulade em entender API

2 respostas
Paola89

Pessoal, seguinte: quero fazer uma classe para o botão Entrar implementando a interface KeyListener. Uma das ações do botão, é que quando o usuário apertar enter, ele deve responder. Porém, eu não estou conseguindo colocar isso em prática no método keyPressed, estou com dificuldade para entender o parâmetro KeyEvent.

Código:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;


public class TesteBotao implements KeyListener{
	
	JButton entrar = new JButton();
	
	public void keyTyped(KeyEvent e) {
	
		
	}

	public void keyPressed(KeyEvent e) {
		
				
	}

	public void keyReleased(KeyEvent e) {

		
	}
	
}

As minhas dúvidas são:

1- Como implementar esse método com a ação da tecla Enter, eu não sei como utilizar o VK_ENTER;
2- Gostaria que me explicassem melhor o parâmetro KeyEvent, como o que eu colocaria como parâmetro ao chamar o método keyPressed;
3- Gostaria de umas dicas para entender melhor as APIs.

Obrigada!

2 Respostas

OliveirakunJava

Além de implementar a interface KeyListener, vc deve sobrescrever o método keyPressed ou keyReleased e dizer qual é o botão que vai disparar o evento, através do método addKeyListener, conforme o exemplo abaixo:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class TesteBotao extends JFrame implements ActionListener, KeyListener {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1966118880709686580L;
	private JButton entrar;

	
	public TesteBotao(){
		
		FlowLayout layout = new FlowLayout();
		layout.setAlignment(FlowLayout.CENTER);
		layout.setVgap(25);
		this.setLayout(layout);
		
		entrar =  new JButton("Entrar");
		entrar.addActionListener(this);
		entrar.addKeyListener(this);
			
		this.add(entrar);
			
			
		this.setTitle("Teste");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setSize(200,100);
		this.setVisible(true);
		
		
	}
	
	public static void main(String[] args){
		
		new TesteBotao();
		
	}

	@Override
	public void actionPerformed(ActionEvent evt) {

		if(evt.getSource() == entrar){
			JOptionPane.showMessageDialog(null,"O botão entrar foi pressionado");
		}
		
	}

	@Override
	public void keyPressed(KeyEvent evt) {
		if(evt.getKeyCode() == KeyEvent.VK_ENTER){
			JOptionPane.showMessageDialog(null,"O botão entrar foi pressionado");
		}
		
	}

	@Override
	public void keyReleased(KeyEvent evt) {
		// TODO Auto-generated method stub
	}

	@Override
	public void keyTyped(KeyEvent evt) {
		// TODO Auto-generated method stub
		
	}
	
}
Paola89

Muito obrigada OliveirakunJava !

Valeu mesmo!

Criado 12 de outubro de 2011
Ultima resposta 12 de out. de 2011
Respostas 2
Participantes 2