Oi,
O keyTyped(KeyEvent e) é disparado quando você aperta a tecla, ou seja quando ela “afunda”, o KeyRelesed(KeyEvent e) é disparado quando você solta a tecla, ou seja quando ela “volta pra cima” e o KeyPressed(KeyEvent e) é chamado periódicamente enquanto a tecla está pressionada.
a lógica da sua calculadora vai continuar exatamente a mesma, inclusive ela vai continuar funcionando com o mouse, vamos ao raciocínio.
o que provavelmente você faz atualmente:
1 - o usuário entra com os números clicando nas teclas,
2 - o usuário escolhe uma operação
3 - você guarda o primeiro valor em uma variável e a operação em outra
4 - o usuário entra com o segundo valor
5 - o usuário clica em igual
6 - você pega o valor do segunda número, efetua a operação escolhida, e devolve o resultado
essa sequência de passos não vai mudar, a unica coisa é que você vai implementar um KeyListenner
vou te mandar um exemplo bem simples pra você ter uma idéia do que você tem que fazer
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Arrays;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class SimpleCalc extends JFrame {
private double n1;
private double n2;
private char op;
private JTextField visor;
private static char[] opValidas = {'+','-','/','*'};
private boolean limpa = false;
public SimpleCalc() {
visor = new JTextField();
this.getContentPane().add(visor);
Arrays.sort(opValidas);
visor.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
if(limpa){
visor.setText("");
limpa = false;
n1 = 0;
n2 = 0;
op = ' ';
}
if(Arrays.binarySearch(opValidas, e.getKeyChar())> -1
|| e.getKeyChar() == KeyEvent.VK_ENTER){
System.out.println(n1);
if(n1 == 0){
n1 = Double.parseDouble(visor.getText());
op = e.getKeyChar();
visor.setText("");
}
else{
n2 = Double.parseDouble(visor.getText().substring(1));
System.out.println(op);
switch(op){
case '+':
n1+=n2;
break;
case '-':
n1-=n2;
break;
case '*':
n1*=n2;
break;
case '/':
n1/=n2;
break;
}
visor.setText(n1+"");
limpa = true;
}
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
});
this.setSize(200,50);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
new SimpleCalc();
}
}
para testar, digite um número, em seguida digite uma operação matemática, digite outro número e aperte enter.
como é só um exemplo eu não estou tratando exceções.