24/10/11

Calculadora em Java

Aprenda a fazer uma calculadora em linguagem java

Classe modelo




/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Herlander
 */
public class calculadora
{
    private int proximaoperacao; //0=+1 =-2=*3=/-1=indef.
    private int a;
    private int b;

    public calculadora()
    {
        proximaoperacao=-1;
        a=0;
        b=0;
    }

    public void setProximaoperacao(int proximaoperacao) {
        this.proximaoperacao = proximaoperacao;
    }

    public int getProximaoperacao() {
        return proximaoperacao;
    }

    public int getA()
    {
        return a;
    }

    public int getB()
    {
        return b;
    }

    public void setA(int a)
    {
        this.a = a;
    }

    public void setB(int b)
    {
        this.b = b;
    }


    public int Somar()
    {
        return a+b;

    }

    public int Subtrair()
    {
        return a-b;

    }
    public int Multiplicar()
    {
        return a*b;

    }

    public int Dividir()
    {
        return a/b;
   
    }

    public int calcular()
    {
        switch (proximaoperacao)
        {
            case 0: return Somar();
            case 1: return Subtrair();
            case 2: return Multiplicar();
            case 3: return Dividir();
            default : return 0;



        }



    }

    public String toString()
    {
        String str = "a="+a+", b="+b+", proximaoperacao="+proximaoperacao;
        return str;
    }

}


classe visao





/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
/**
 *
 * @author Herlander
 */
public class VistaCalculadora extends JFrame
{
    private JButton btMais;
    private JButton btMenos;
    private JButton btMultiplicar;
    private JButton btDividir;
    private JButton btSinal;
    private JButton btIgual;
    private JButton btDigitos[];
    private JButton btLimpar;
    private JPanel  panelBt;
    private JTextField tfVista;
    private JPanel panelprincipal;

    public VistaCalculadora(ControladorCalculadora cc)
    {
        super ("Calculadora");

        tfVista = new JTextField("0");
        tfVista.setEnabled(false);

        tfVista.setHorizontalAlignment(SwingConstants.RIGHT);

        btMais = new JButton("+");
        btMais.setName("+");
        btMais.addActionListener(cc);

        btMenos = new JButton("-");
        btMenos.setName("-");
        btMenos.addActionListener(cc);

        btMultiplicar = new JButton("*");
        btMultiplicar.setName("*");
        btMultiplicar.addActionListener(cc);

        btDividir = new JButton("/");
        btDividir.setName("/");
        btDividir.addActionListener(cc);

        btMais.setForeground(Color.BLUE);
        btMenos.setForeground(Color.BLUE);
        btMultiplicar.setForeground(Color.BLUE);
        btDividir.setForeground(Color.BLUE);

        for (int i=0; i<10; i++)
        {
            Integer integer = new Integer(i);
            btDigitos[i]= new JButton(integer.toString());
            btDigitos [i].setName("Digitos");
            btDigitos[i].addActionListener(cc);




        }

        btSinal = new JButton("+-/*");
        btSinal.setName("+-/*");
        btSinal.addActionListener(cc);
        btSinal.setForeground(Color.blue);

        btIgual = new JButton("=");
        btIgual.setName("=");
        btIgual.addActionListener(cc);
        btIgual.setForeground(Color.blue);

        panelBt = new JPanel (new GridLayout(4,4));
        panelBt.add(btDigitos[7]);
        panelBt.add(btDigitos[8]);
        panelBt.add(btDigitos[9]);
        panelBt.add(btDividir);

        panelBt.add(btDigitos[4]);
        panelBt.add(btDigitos[5]);
        panelBt.add(btDigitos[6]);
        panelBt.add(btMultiplicar);

        panelBt.add(btDigitos[1]);
        panelBt.add(btDigitos[2]);
        panelBt.add(btDigitos[3]);
        panelBt.add(btMenos);

        panelBt.add(btDigitos[0]);
        panelBt.add(btSinal);
        panelBt.add(btIgual);
        panelBt.add(btMais);

        btLimpar =new JButton("Limpar");
        btLimpar.setName("Limpar");
        btLimpar.addActionListener(cc);

        panelprincipal = new JPanel(new BorderLayout());
        panelprincipal.add(tfVista, "North");
        panelprincipal.add(panelBt, "Center");
        panelprincipal.add(btLimpar, "South");
        setContentPane(panelprincipal);

        addWindowListener(cc);
        setSize(200,165);
        setVisible(true);












    }

    public JTextField getVista()
    {
        return tfVista;

    }



}

classe controlo



/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import javax.swing.*;
import java.awt.*;
import javax.swing.event.*;
import java.awt.event.WindowAdapter.*;

import java.awt.event.*;

/**
 *
 * @author Herlander
 */
public class ControladorCalculadora extends WindowAdapter implements ActionListener
{
    private calculadora c;
    private VistaCalculadora vc;
    private JTextField tfVista;
    private boolean Limpar;

    public ControladorCalculadora()
    {
        c = new calculadora();
        vc = new VistaCalculadora(this);
        tfVista = vc.getVista();
        Limpar = false;

    }

    public void WindowClosing(WindowEvent e)
    {
        System.exit(0);


    }

    public void ActionPerformed(ActionEvent e)
    {
        JButton bt= (JButton) e.getSource();
        if(bt.getName().equals("Digito"))
        {
            if(Limpar)
            {
                tfVista.setText("");
                Limpar=false;

            }

            if(!tfVista.getText().equals("0"))
                tfVista.setText(tfVista.getText()+bt.getText());
            else
                tfVista.setText(bt.getText());


        }
        else if (bt.getName().equals("Limpar"))
            {
                tfVista.setText("0");
                c.setProximaoperacao(-1);



            }

         else if (bt.getName().equals("+-/*"))
         {
             int i = Integer.parseInt(tfVista.getText());

             if(i>=0)
                 i+=-(2*i);
             else
                 i+= -2*i;
             Integer integer =new Integer (i);
             tfVista.setText(integer.toString());

         }

         else
         {
            c.setA(Integer.parseInt(tfVista.getText()));
            Limpar = true;

            if(bt.getName().equals("+"))
                c.setProximaoperacao(0);
            else
                if(bt.getName().equals("-"))
                c.setProximaoperacao(1);

           else
               if(bt.getName().equals("*"))
                c.setProximaoperacao(2);
            else
                if(bt.getName().equals("/"))
                c.setProximaoperacao(3);




         }


    }



}
Main



/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Herlander
 */
public class app {
    public static void main(String args[])
    {
        ControladorCalculadora cc = new ControladorCalculadora();

    }

}

Sem comentários:

Enviar um comentário