Implementação do KeyEvent

Alguém,
Pode me explicar, do por que não estou conseguindo capturar o primeiro evento do gerado pelo teclado?

Exemplo rodo a aplicação, realizo um evento do teclado e o mesmo não e capturado. O mesmo não acontece, quando o primeiro evento gerado um ActionEvent, e após um KeyEvent.

Agradeço a todos.

Trajano

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.*;
import java.math.BigDecimal;

public class Calculadora extends JFrame implements ActionListener {

JTextField display = new JTextField(20);

JPanel botoes = new JPanel();

String buttons = "v%<C789/456*123-0.=+";

private boolean start = true;

private String op = "=";

String s;

private double arg = 0;

public Calculadora(String title) {
	super(title);
	setLayout(new BorderLayout());
	display.setEditable(false);
	add(display, "North");
	botoes.setLayout(new GridLayout(5, 4));
	for (int i = 0; i < buttons.length(); i++)
		addButton(botoes, buttons.substring(i, i + 1));
	add(botoes, "Center");
}

private void addButton(Container c, String s) {
	JButton b = new JButton(s);
	c.add(b);
	b.addActionListener(this);
	b.addKeyListener(new java.awt.event.KeyAdapter() {
  public void keyTyped(KeyEvent e) {
    teclado_keyTyped(e);
  }
});
}

private void criaMostraGUI() {
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	getContentPane().add(botoes);
	setLocation(300, 300);
	pack();
	setVisible(true);
}

public static void main(String[] args) {
	Calculadora gui = new Calculadora("Calculadora");
	gui.criaMostraGUI();
}

//Tratamento dos eventos do MOUSE
public void actionPerformed(ActionEvent evt) {
	s = evt.getActionCommand();
	if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".")) {
		if (start)
			display.setText(s);
		else
			display.setText(display.getText() + s);
		start = false;
	} else {
		if (start) {
			if (s.equals("-")) {
				display.setText(s);
				start = false;
			} else
				op = s;
		} else {
			double x = Double.parseDouble(display.getText());
			calcula(x);
			op = s;
			start = true;
		}
	}
}

//Tratamento dos eventos do TECLADO 
public void teclado_keyTyped(KeyEvent e) {				         
	s =String.valueOf(e.getKeyChar());		
	if ('0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".")) {
		if (start)
			display.setText(s);
		else
			display.setText(display.getText() + s);
		start = false;
	} else {
		if (start) {
			if (s.equals("-")) {
				display.setText(s);
				start = false;
			} else
				op = s;
		} else {
			double x = Double.parseDouble(display.getText());
			calcula(x);
			op = s;
			start = true;
			}
			}
			}
		
//Operações
public void calcula(double n) {
	String num = " ";
	if (op.equals("+")) {
		BigDecimal rB = (new BigDecimal(arg)).add(new BigDecimal(n));
		num = String.valueOf(rB);
		arg = Double.parseDouble(num);
	} else if (op.equals("-")) {
		BigDecimal rB = (new BigDecimal(arg)).subtract(new BigDecimal(n));
		num = String.valueOf(rB);
		arg = Double.parseDouble(num);
	} else if (op.equals("*")) {
		BigDecimal rB = (new BigDecimal(arg)).multiply(new BigDecimal(n));
		num = String.valueOf(rB);
		arg = Double.parseDouble(num);
	} else if (op.equals("/")) {
		BigDecimal rB = (new BigDecimal(arg)).divide(new BigDecimal(n));
		num = String.valueOf(rB);
		arg = Double.parseDouble(num);
	} else if (op.equals("%"))
		arg = arg * n / 100;
	else if (op.equals("v"))
		arg = Math.sqrt(n);
	else if (op.equals("<"))
		arg = (arg - 1);
	else if (op.equals("="))
		arg = n;
	display.setText("" + arg);
}

}[/code]

quanto aos eventos do teclado é so o 1° evento que não pega ? ou nenhum evento pega?
eu aconselho a adicionar o botao ao container dps de configura-lo
JButton b = new JButton(s);
b.addActionListener(this);
b.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(KeyEvent e) {
teclado_keyTyped(e);
}
});
c.add(b); <==

to no trampo dps termino de ler todo o codigo :smiley:

Somente o primeiro evento que não e capturado, os demais sim …
Desde que você, tenha chamado primeiro um evento de mouse…
Valeu