用于在Java中接收键盘函数的Calculador

时间:2014-05-01 22:46:48

标签: java eclipse

我用Java制作了一个计算器,但是它无法通过键盘接收数字和操作。我想我必须使用扫描仪,但不知道如何。

以下是代码:

import java.awt.event.*;
import javax.swing.*;

public class Calculadora extends JFrame {
    private static final long serialVersionUID = 1L;

    private JButton n1;
    private JButton n2;
    private JButton n3;
    private JButton n4;
    private JButton n5;
    private JButton n6;
    private JButton n7;
    private JButton n8;
    private JButton n9;
    private JButton n0;
    private JButton botaoMais;
    private JButton botaoMenos;
    private JButton botaoVezes;
    private JButton botaoDividi;
    private JButton botaoIgual;
    private JButton botaoC;
    private JButton botaoCE;
    private JButton botaoPonto;
    private JLabel creditos;
    private char operacao;
    private int inteiro;
    private int decimal;
    private double memoria;
    private boolean ponto;
    private JTextField campo;

    public Calculadora(){
        this.setTitle("Calculadora do Ozzy");
        this.setBounds(0,0,280,385);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.getContentPane().setLayout(null);

        inteiro = 0;
        decimal = 0;
        memoria = 0;

        n1 = new JButton ();
        n1.setText("1");
        n1.setBounds(25,115,45,45);
        this.add(n1);

        n2 = new JButton ();
        n2.setText("2");
        n2.setBounds(85,115,45,45);
        this.add(n2);

        n3 = new JButton();
        n3.setText("3");
        n3.setBounds(140,115,45,45);
        this.add(n3);

        n4 = new JButton();
        n4.setText ("4");
        n4.setBounds (25,170,45,45);
        this.add(n4);

        n5 = new JButton ();
        n5.setText("5");
        n5.setBounds(85,170,45,45);
        this.add (n5);

        n6 = new JButton();
        n6.setText("6");
        n6.setBounds(140,170,45,45);
        this.add(n6);

        n7 = new JButton ();
        n7.setText("7");
        n7.setBounds(25,225,45,45);
        this.add(n7);

        n8 = new JButton();
        n8.setText("8");
        n8.setBounds (85,225,45,45);
        this.add (n8);

        n9 = new JButton ();
        n9.setText("9");
        n9.setBounds (140,225,45,45);
        this.add (n9);

        n0 = new JButton();
        n0.setText ("0");
        n0.setBounds (140,280,45,45);
        this.add (n0);

        botaoMais = new JButton();
        botaoMais.setText("+");
        botaoMais.setBounds(195,115,45,45);
        this.add(botaoMais);

        botaoMenos = new JButton ();
        botaoMenos.setText ("-");
        botaoMenos.setBounds(195,170,45,45);
        this.add (botaoMenos);

        botaoVezes = new JButton();
        botaoVezes.setText ("x");
        botaoVezes.setBounds(195,225,45,45);
        this.add(botaoVezes);

        botaoDividi = new JButton();
        botaoDividi.setText("÷");
        botaoDividi.setBounds(195,280,45,45);
        this.add(botaoDividi);

        botaoIgual = new JButton();
        botaoIgual.setText("=");
        botaoIgual.setBounds(25,280,45,45);
        this.add(botaoIgual);

        botaoPonto = new JButton ();
        botaoPonto.setText(".");
        botaoPonto.setBounds(85,280,45,45);
        this.add (botaoPonto);

        botaoC = new JButton ();
        botaoC.setText("C");
        botaoC.setBounds(25,65,105,40);
        this.add(botaoC);

        botaoCE = new JButton ();
        botaoCE.setText("CE");
        botaoCE.setBounds(140,65,100,40);
        this.add(botaoCE);

        campo = new JTextField();
        campo.setBounds(25,25,216,30);
        this.add(campo);

        creditos = new JLabel();
        creditos.setBounds(80,285,900,100);
        creditos.setText ("Gabriel Ozzy Santos");
        this.add(creditos);

        n1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                if(ponto){
                    decimal +=1;
                } else{
                inteiro *= 10;
                inteiro +=1;

                }
                campo.setText(campo.getText()+ "1");
            }
        });
        n2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                if (ponto){
                    decimal +=2;
                }else{
                inteiro *=10;
                inteiro+= 2;

                }
                campo.setText (campo.getText()+"2");
            }
        });
        n3.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                if (ponto){
                    decimal+=3;
                }else {
                inteiro *= 10;
                inteiro += 3;
                }
                campo.setText(campo.getText()+"3");

            }
        });
        n4.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                if (ponto){
                    decimal+=4;
                }else {
                inteiro *= 10;
                inteiro +=4;
                }
                campo.setText (campo.getText ()+"4");

            }
        });
        n5.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){
                if (ponto){
                    decimal +=5;
                }else{
                inteiro*= 10;
                inteiro +=5;
                }
                campo.setText (campo.getText ()+ "5");
            }
        });
        n6.addActionListener (new ActionListener (){
            public void actionPerformed (ActionEvent evt){
                if (ponto){
                    decimal +=6;
                }else {
                inteiro*= 10;
                inteiro +=6;
                }
                campo.setText (campo.getText ()+ "6");
            }
        });
        n7.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){
                if(ponto){
                    decimal +=7;
                }else {
                inteiro*= 10;
                inteiro +=7;
                }
                campo.setText (campo.getText()+"7");
            }
        });
        n8.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                if(ponto){
                    decimal +=8;
                }else{
                inteiro *=10;
                inteiro +=8;
                }
                campo.setText(campo.getText()+"8");
            }
        });
        n9.addActionListener (new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                if (ponto){
                    decimal +=9;
                }else{
                inteiro *=10;
                inteiro +=9;
                }
                campo.setText(campo.getText()+"9");

            }
        });
        n0.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                if(ponto){
                    decimal +=0;
                }else{
                inteiro*=10;
                inteiro +=0;
                }
                campo.setText(campo.getText()+"0");
            }
        });
        botaoMais.addActionListener (new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                double numero =Double.parseDouble(String.format("%s.%s",inteiro,decimal));
                operacao = '+';
                if (memoria > 0){
                    memoria += numero;
                }else{
                        memoria = numero;
                    }
                inteiro = 0;
                numero = 0;
                decimal = 0;
                ponto = false;
                campo.setText("");
                }
            });
        botaoMenos.addActionListener (new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                double numero = Double.parseDouble (String.format("%s.%s",inteiro,decimal));
                operacao = '-';
                if (memoria > 0){
                    memoria -= numero;
                }else {
                    memoria = numero;
                }
                numero = 0;
                inteiro = 0;
                decimal = 0;
                ponto = false;
                campo.setText("");
            }
        });
        botaoVezes.addActionListener (new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                double numero = Double.parseDouble (String.format("%s.%s",inteiro,decimal));
                operacao = '*';
                if (memoria > 0){
                    memoria *= numero;
                }else {
                    memoria = numero;
                }
                numero = 0;
                inteiro =0;
                decimal =0;
                ponto = false;      
                campo.setText("");
            }
        });
        botaoDividi.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){
                double numero = Double.parseDouble(String.format("%s.%s",inteiro,decimal));
                operacao = '/';
                if(memoria > 0){
                    memoria /=numero;
                }else {
                    memoria = numero;
                }
                numero=0;
                inteiro =0;
                decimal = 0;
                ponto = false;
                campo.setText("");
            }
        });
        botaoC.addActionListener (new ActionListener(){
            public void actionPerformed (ActionEvent evt){
                inteiro = 0;
                decimal = 0;
                memoria = 0;
                ponto = false;
                campo.setText("");
            }
        });
        botaoCE.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){
                inteiro = 0;
                decimal = 0;
                ponto = false;
                campo.setText("");
            }
        });
        botaoPonto.addActionListener(new ActionListener(){
            public void actionPerformed (ActionEvent evt){
                if (!ponto){
                    campo.setText(inteiro +".");
                    ponto = (true);
                }
            }
        });
        botaoIgual.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent evt){
                double numero = Double.parseDouble(String.format("%s.%s", inteiro, decimal));
                switch (operacao){
                case '+':{
                    memoria += numero;
                    break;
                }
                case '-':{
                    memoria -=numero;
                    break;
                }
                case '*':{
                    memoria *=numero;
                    break;
                }
                case '/':{
                    memoria /=numero;
                    break;
                }
                }
                numero = 0;
                campo.setText(""+ memoria);
            }
        });

    }

    public static void main (String [] args){
        Calculadora cCalculadora = new Calculadora();
            cCalculadora.setVisible(true);
    }
}

3 个答案:

答案 0 :(得分:0)

你不能只使用TextField campo进行输入吗?我想这是显示当前结果的那个

答案 1 :(得分:0)

按一下按钮并设置一个简单的

像这样 http://www.herongyang.com/Swing/JMenuBar-Set-Keyboard-Mnemonics-on-Menu-Items.html

Itll允许你使用键

答案 2 :(得分:0)

访问官方oracle的教程,一切都应该在那里。 http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html