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();
}
}