Ola pessoal tenho um codigo de uma calculadora e funciona tudo belezinha mas preciso implementar o KeyListener da tecla ENTER nele no caso eu aperta-se ENTER ele fize-se a soma, abaixo esta o codigo algueim me da uma forca? todas teclas estao com tratamento ja menos a ENTER que nao consigo por ;/
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JPanel;
//import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Default extends JFrame implements KeyListener, ActionListener {
private int i = 0;
private Container cp;
private JPanel pn;
private JTextField campo;
private JButton zerar;
private JButton[] numeros = new JButton[10];
private JButton[] operacao = new JButton[10];
private String[] operacoes = {"/", "Sqrt", "*", "%", "-", "1/x", "+/-", ".", "+", "="};
private double memoria;
private char operaracao_efetuada = ' ';
private boolean dot = false;
private boolean resultado = false;
public Default() {
setFocusable(true);
addKeyListener(this);
setTitle("Calculadora Implementada");
setSize(311, 173);
centerJFrame(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
pn = new JPanel();
pn.setBounds(0,40,302,100);
pn.setLayout(new GridLayout(4, 5, 3, 1));
pn.setFocusable(false);
// matrizes
pn.add(numeros[7] = new JButton("7"));
pn.add(numeros[8] = new JButton("8"));
pn.add(numeros[9] = new JButton("9"));
pn.add(operacao[0] = new JButton(operacoes[0]));
pn.add(operacao[1] = new JButton(operacoes[1]));
pn.add(numeros[4] = new JButton("4"));
pn.add(numeros[5] = new JButton("5"));
pn.add(numeros[6] = new JButton("6"));
pn.add(operacao[2] = new JButton(operacoes[2]));
pn.add(operacao[3] = new JButton(operacoes[3]));
pn.add(numeros[1] = new JButton("1"));
pn.add(numeros[2] = new JButton("2"));
pn.add(numeros[3] = new JButton("3"));
pn.add(operacao[4] = new JButton(operacoes[4]));
pn.add(operacao[5] = new JButton(operacoes[5]));
pn.add(numeros[0] = new JButton("0"));
pn.add(operacao[6] = new JButton(operacoes[6]));
pn.add(operacao[7] = new JButton(operacoes[7]));
pn.add(operacao[8] = new JButton(operacoes[8]));
pn.add(operacao[9] = new JButton(operacoes[9]));
for(i=0;i<10;i++) {
operacao[i].setFocusable(false);
operacao[i].addActionListener(this);
numeros[i].setFocusable(false);
numeros[i].addActionListener(this);
}
campo = new JTextField();
campo.setEditable(false);
campo.setBounds(0, 8, 241, 25);
campo.setBackground(Color.GREEN);
campo.setFocusable(false);
campo.setHorizontalAlignment(JTextField.RIGHT);
zerar = new JButton("CE");
zerar.setBounds(244, 8, 58, 25);
zerar.setFocusable(false);
zerar.addActionListener(this);
zerar.setMnemonic('C');
cp = getContentPane();
cp.setLayout(null);
cp.add(campo);
cp.add(zerar);
cp.add(pn);
}
private void centerJFrame (JFrame frame) {
Dimension paneSize = frame.getSize();
Dimension screenSize = frame.getToolkit().getScreenSize();
frame.setLocation( (screenSize.width - paneSize.width) / 2, (screenSize.height - paneSize.height) / 2);
}
private void limpaCampo() {
if(resultado) {
campo.setText("");
resultado = false;
}
}
public void actionPerformed (ActionEvent e) {
for(i=0;i<10;i++) {
if(e.getSource() == numeros[i]) {
//Limita o valor digitado a 10 caracteres
if(campo.getText().length() <= 10) {
limpaCampo();
if(dot) {
campo.setText(campo.getText() + "." + i);
dot = false;
} else {
campo.setText(campo.getText() + i);
}
}
}
}
if(e.getSource() == zerar) {
campo.setText("");
operaracao_efetuada = ' ';
memoria = 0;
}
if(e.getSource() == operacao[5]) {
if(isEmpty(campo)) {
memoria = 1 / Double.parseDouble(campo.getText());
campo.setText("" + memoria);
resultado = true;
}
}
if(e.getSource() == operacao[1]) {
if(isEmpty(campo)) {
memoria = Math.sqrt(Double.parseDouble(campo.getText()));
if(memoria >= 0) {
campo.setText("" + memoria);
} else {
campo.setText("Valor inválido!");
}
resultado = true;
}
}
if(e.getSource() == operacao[0]) {
if(isEmpty(campo)) {
setOperacao('/');
}
}
if(e.getSource() == operacao[2]) {
if(isEmpty(campo)) {
setOperacao('*');
}
}
if(e.getSource() == operacao[4]) {
if(isEmpty(campo)) {
setOperacao('-');
}
}
if(e.getSource() == operacao[8]) {
if(isEmpty(campo)) {
setOperacao('+');
}
}
if(e.getSource() == operacao[7]) {
if(isEmpty(campo)) {
if(campo.getText().indexOf(".") == -1)
dot = true;
}
}
if(e.getSource() == operacao[6]) {
if(isEmpty(campo)) {
memoria = Double.parseDouble(campo.getText()) * (-1);
campo.setText("" + memoria);
operaracao_efetuada = ' ';
resultado = true;
}
}
if(e.getSource() == operacao[9]) {
if(isEmpty(campo)) {
if(operaracao_efetuada != ' ') {
switch (operaracao_efetuada) {
case '+':
memoria += Double.parseDouble(campo.getText());
campo.setText("" + memoria);
operaracao_efetuada = ' ';
resultado = true;
break;
case '-':
memoria -= Double.parseDouble(campo.getText());
campo.setText("" + memoria);
operaracao_efetuada = ' ';
resultado = true;
break;
case '*':
memoria *= Double.parseDouble(campo.getText());
campo.setText("" + memoria);
operaracao_efetuada = ' ';
resultado = true;
break;
case '/':
memoria /= Double.parseDouble(campo.getText());
campo.setText("" + memoria);
operaracao_efetuada = ' ';
resultado = true;
break;
}
}
}
}
}
private void setOperacao(char e) {
memoria = Double.parseDouble(campo.getText());
campo.setText("");
operaracao_efetuada = e;
}
private boolean isEmpty(JTextField e) {
if(e.getText().length() == 0) {
JOptionPane.showMessageDialog(null, "Campo em branco, digite um número!","Campo em branco", JOptionPane.ERROR_MESSAGE);
return false;
} else {
return true;
}
}
public void keyReleased(KeyEvent e) {
// Evento chamado quando a tecla é liberada depois do evento KeyPressed ou KeyTyped
int x = e.getKeyCode();
//JOptionPane.showMessageDialog(null, ""+x);
if(isValid(x)) {
String tecla = e.getKeyText(e.getKeyCode());
for(i=0;i<10;i++) {
if(tecla.equals(""+i) || tecla.equals("NumPad-"+i)) {
numeros[i].doClick();
}
}
if(x == 44) {
operacao[7].doClick();
}
if(x == 61) {
operacao[9].doClick();
}
if(x == 111) {
operacao[0].doClick();
}
if(x == 106) {
operacao[2].doClick();
}
if(x == 109) {
operacao[4].doClick();
}
if(x == 107) {
operacao[8].doClick();
}
}
}
public void keyTyped(KeyEvent e) {
// Evento chamado quando o usuário aperta alguma tecla que não seja de acão
// por exemplo: Page Down, Num Lock, Home, Page Down, End
}
public void keyPressed( KeyEvent e) {
// Evento chamado quando o usuário pressiona qualquer tecla
if(e.getKeyCode() == e.VK_ESCAPE){
// passando this e nao null, mensagem aparece centro da janela
int selectedOption = JOptionPane.showConfirmDialog(this,"Deseja Sair Realmente?", "Atenção", JOptionPane.YES_NO_OPTION);
if(selectedOption == JOptionPane.YES_OPTION){
dispose();
System.exit(0);
}
if (e.getKeyCode() == 10) setOperacao();
}
}
private boolean isValid(int x) {
if((x >= 48) && ( x <= 57 ) || (x >=96) && (x<=105) || (x == 111) || (x == 107) || (x == 106) || (x == 109) || (x == 46) || (x == 61) || (x == 44) ) {
return true;
}
return false;
}
public static void main( String args[]) {
new Default().show();
}
}