Desenvolvimento de aplicativo tipo calculadora

6 respostas
D

Pessoal estou precisando desenvolver uma aplicação em Java que pode ser tanto local quanto Web e gostaria de ver se alguém poderia me explicar se é possível desenvolvê-la destas duas maneiras. A aplicação é a seguinte: seria um tipo de calculadora, na qual eu teria por baixo do programa uma fórmula que calcularia a soma de duas variáveis, as quais teriam dois campos que ficariam dispostos na tela e ao serem preenchidos, seria automaticamente informado o valor do produto das duas em outro campo. Sendo que após ter informado o segundo valor, eu não precisaria de nenhum evento, ou seja não precisaria existir o botão OK, bastando apenas dar um enter e o vlor do terceiro campo com o resultado da soma seria preenchido, limpando os campos um e dois, tornando possível uma nova digitação até que o programa fosse encerrado. Gostaria da opinião de vocês, quanto a viabilidade de desenvolvimento desta aplicação, tanto web quanto local, e se possível algum exemplo que pudesse me ajudar no desenvolvimento da mesma.

6 Respostas

D

Cara a principio é uma aplicação simples de se fazer…para realizar essa aplicação em desktop uitilize a API java.awt.* e implementar a interface keylistener para quando você pressionar a tecla ENTER ele tomar determinado ação, ou então pode usar o ActionPerformed, mas ai você já utilizaria um botão…quando o usuario pressionasse o ok ele tomaria determinada ação por exemplo. Agora pra web você pode criar um pequeno formulario através de uma pagina JSP e envia-las ao servlet que faria o processamento dos dados necessários e fazer a exibição dos dados em uma outra página JSP.

Acho que seria mais ou menos assim, corrijam se eu estiver errado por favor!

Falou galera!

J

Você poderia tentar algo desse tipo, teste o codigo aí que eu escrevi direto aqui na resposta e não testei…

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

public class Calc extends JPanel implements ActionListener{
  private JTextField txfValor1 = new JTextField(10);
  private JTextField txfValor2 = new JTextField(10);
  private JTextField txfResultado = new JTextField(10);

  public Calc(){
    add(txfValor1);
    add(txfValor2);
    add(txfResultado);
    txfValor2.addActionListener(this);
  }
   public void actionPerformed(ActionEvent evt){
      txfResultado.setText(Integer.toString(somar(Integer.parseInt(txfValor1.getText()), Integer.parseInt(txfValor2.getText()));
      txfValor1.setText("");
      txfValor1.setText("");
   }

   public int somar(int a, int b){
      return a+b;
   }
}

//para desktop

public class Aplicacao extends JFrame{
   private Calc calc = new Calc();
   public Aplicacao(){
      getContentPane().add(calc);
      pack();
      setVisible(true);
   }

   public static void main(String[] a){
      new Aplicacao();
  }
}

//um applet para web

public class AppWeb extends JApplet{
   private Calc calc = new Calc();
   public void init(){
     add(calc);
   }
}
D

Obrigado pessoal pela ajuda. :okok:

W
Cara, eu já tenho uma calculadora em MVC. Faz as quatro operações básicas, MOD, CE e limpar. Já vou disponibilizar o código fonte da View, Controle e Operadores. Agora basta você criar a HTML para acesar a calculadora, não vou disponizá-lo porque o HTML é particular e não fui eu que desenvolvi.
package calculadora;

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.text.DecimalFormat;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class CalculadoraJanela extends JFrame
{
    //Container
    private Container container;
    
    //Rótulo
    private JLabel textoTituloLabel;
    
    //Campos
    private JTextField resultadoField;
   
    //Botões
    private JButton umButton, doisButton, tresButton, quatroButton, cincoButton, seisButton, seteButton,
        oitoButton, noveButton, zeroButton, multiplicaButton, divideButton, somaButton, subtraiButton, igualButton,
        pontoButton, modButton, limparButton, ceButton, alteraCorSegundoPlanoButton, creditosButton;
    
    //Controlador da Calculadora
    private CalculadoraControle controle;
    
    //Imagem para o crédito do programa
    private final Icon tituloCredito = new ImageIcon ("tituloCredito.gif");
    
    //Fontes
    private Font fonte;
    
    //Cores
    private Color cinzaEscuro, cinzaClaro, branco, cor;
           
    public CalculadoraJanela()
    {
        super("Calculadora - Wanderlúcio");

        controle = new CalculadoraControle(this);

        fonte = new Font ("Monospaced", Font.PLAIN, 10);
        
        container = getContentPane();
        container.setLayout(new FlowLayout(FlowLayout.CENTER,3,3));
        
        cinzaEscuro = cinzaEscuro.gray;
        cinzaClaro = cinzaClaro.lightGray;
        branco = branco.white;
      
        Icon titulo = new ImageIcon ("titulo.gif");
        textoTituloLabel = new JLabel(titulo);
        textoTituloLabel.setToolTipText("Desenvolvido com tecnologia JAVA");
        container.add (textoTituloLabel);

        resultadoField = new JTextField("0.0", 22);
        resultadoField.setEditable(false);
        resultadoField.setBackground (branco);
        container.add (resultadoField);
        
        Icon sete = new ImageIcon ("sete.gif");
        Icon sete2 = new ImageIcon ("sete2.gif");
        seteButton = new JButton(sete);
        seteButton.setRolloverIcon(sete2);
        seteButton.setMnemonic('7');
        seteButton.setBackground (cinzaClaro);
        seteButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao7();
                }
            }
         );
        container.add(seteButton);

        Icon oito = new ImageIcon ("oito.gif");
        Icon oito2 = new ImageIcon ("oito2.gif");
        oitoButton = new JButton(oito);
        oitoButton.setRolloverIcon(oito2);
        oitoButton.setMnemonic('8');
        oitoButton.setBackground (cinzaClaro);
        oitoButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao8();
                }
            }
        );
        container.add(oitoButton);

        Icon nove = new ImageIcon ("nove.gif");
        Icon nove2 = new ImageIcon ("nove2.gif");
        noveButton = new JButton(nove);
        noveButton.setRolloverIcon(nove2);
        noveButton.setMnemonic('9');
        noveButton.setBackground (cinzaClaro);
        noveButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao9();
                }
            }
        );
        container.add(noveButton);    
    
        Icon soma = new ImageIcon("soma.gif");
        Icon soma2 = new ImageIcon("soma2.gif");
        somaButton = new JButton(soma);
        somaButton.setRolloverIcon(soma2);
        somaButton.setMnemonic('s');
        somaButton.setToolTipText("SOMA: Realiza uma soma");
        somaButton.setBackground (cinzaClaro);
        somaButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoSoma();
                }
            }
        );
        container.add(somaButton);
    
        Icon quatro = new ImageIcon ("quatro.gif");
        Icon quatro2 = new ImageIcon ("quatro2.gif");
        quatroButton = new JButton(quatro);
        quatroButton.setRolloverIcon(quatro2);
        quatroButton.setMnemonic('4');
        quatroButton.setBackground (cinzaClaro);
        quatroButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao4();
                }
            }
        );
        container.add(quatroButton);    
    
        Icon cinco = new ImageIcon ("cinco.gif");
        Icon cinco2 = new ImageIcon ("cinco2.gif");
        cincoButton = new JButton(cinco);
        cincoButton.setRolloverIcon(cinco2);
        cincoButton.setMnemonic('5');
        cincoButton.setBackground (cinzaClaro);
        cincoButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao5();
                }
            }
        );
        container.add(cincoButton);    
    
        Icon seis = new ImageIcon ("seis.gif");
        Icon seis2 = new ImageIcon ("seis2.gif");
        seisButton = new JButton(seis);
        seisButton.setRolloverIcon(seis2);
        seisButton.setMnemonic('6');
        seisButton.setBackground (cinzaClaro);
        seisButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao6();
                }
            }
        );
        container.add(seisButton);    
    
        Icon subtrai = new ImageIcon("subtrai.gif");
        Icon subtrai2 = new ImageIcon("subtrai2.gif");
        subtraiButton = new JButton(subtrai);
        subtraiButton.setRolloverIcon(subtrai2);
        subtraiButton.setMnemonic('u');
        subtraiButton.setToolTipText("SUBTRAI: Realiza uma subtração");
        subtraiButton.setBackground (cinzaClaro);
        subtraiButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoSubtrai();
                }
            }
        );
        container.add(subtraiButton);    
    
        Icon um = new ImageIcon ("um.gif");
        Icon um2 = new ImageIcon ("um2.gif");
        umButton = new JButton(um);
        umButton.setRolloverIcon(um2);
        umButton.setMnemonic('1');
        umButton.setBackground (cinzaClaro);
        umButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao1();
                }
            }
        );
        container.add(umButton);    
    
        Icon dois = new ImageIcon ("dois.gif");
        Icon dois2 = new ImageIcon ("dois2.gif");
        doisButton = new JButton(dois);
        doisButton.setRolloverIcon(dois2);
        doisButton.setMnemonic('2');
        doisButton.setBackground (cinzaClaro);
        doisButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao2();
                }
            }
        );
        container.add(doisButton);    
    
        Icon tres = new ImageIcon ("tres.gif");
        Icon tres2 = new ImageIcon ("tres2.gif");
        tresButton = new JButton(tres);
        tresButton.setRolloverIcon(tres2);
        tresButton.setMnemonic('3');
        tresButton.setBackground (cinzaClaro);
        tresButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botao3();
                }
            }
        );
        container.add(tresButton);    
    
        
        
        Icon multiplica = new ImageIcon("multiplica.gif");
        Icon multiplica2 = new ImageIcon("multiplica2.gif");
        multiplicaButton = new JButton(multiplica);
        multiplicaButton.setRolloverIcon(multiplica2);
        multiplicaButton.setMnemonic('m');
        multiplicaButton.setToolTipText("MULTIPLICA: Realiza uma multiplicaçao");
        multiplicaButton.setBackground (cinzaClaro);
        multiplicaButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoMultiplica();
                }
            }
        );
        container.add(multiplicaButton);    
    
        Icon zero = new ImageIcon ("zero.gif");
        Icon zero2 = new ImageIcon ("zero2.gif");
        zeroButton = new JButton(zero);
        zeroButton.setRolloverIcon(zero2);
        zeroButton.setMnemonic('0');
        zeroButton.setBackground (cinzaClaro);
        zeroButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoZero();
                }
            }
        );
        container.add(zeroButton);    
    
        Icon mod = new ImageIcon ("mod.gif");
        Icon mod2 = new ImageIcon ("mod2.gif");
        modButton = new JButton(mod);
        modButton.setRolloverIcon(mod2);
        modButton.setMnemonic('o');
        modButton.setToolTipText("MOD: Devolve o valor do resto de uma divisão");
        modButton.setBackground (cinzaClaro);
        modButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoMod();
                }
            }
        );
        container.add(modButton);    
    
        Icon ponto = new ImageIcon ("ponto.gif");
        Icon ponto2 = new ImageIcon ("ponto2.gif");
        pontoButton = new JButton(ponto);
        pontoButton.setRolloverIcon(ponto2);
        pontoButton.setMnemonic('.');
        pontoButton.setBackground (cinzaClaro);
        pontoButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoPonto();
                }
            }
        );
        container.add(pontoButton);    

        Icon divide = new ImageIcon ("divide.gif");
        Icon divide2 = new ImageIcon ("divide2.gif");
        divideButton = new JButton(divide);
        divideButton.setRolloverIcon(divide2);
        divideButton.setMnemonic('d');
        divideButton.setToolTipText("DIVIDE: Realiza uma divisão");
        divideButton.setBackground (cinzaClaro);
        divideButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoDivide();
                }
            }
        );
        container.add(divideButton);

        Icon limpar = new ImageIcon("limpar.gif");
        Icon limpar2 = new ImageIcon("limpar2.gif");
        limparButton = new JButton("Limpar   ", limpar);
        limparButton.setRolloverIcon(limpar2);
        limparButton.setMnemonic('l');
        limparButton.setToolTipText("LIMPAR: Limpa o visor de resultados e todos os valores");
        limparButton.setBackground (cinzaClaro);
        limparButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoLimpar();
                }
            }
        );
        container.add(limparButton);    

        Icon ce = new ImageIcon("ce.gif");
        Icon ce2 = new ImageIcon("ce2.gif");
        ceButton = new JButton("CE   ",ce);
        ceButton.setRolloverIcon(ce2);
        ceButton.setMnemonic('c');
        ceButton.setToolTipText("CE: Volta uma acao anulando o que foi digitado e retornando ao resultado anterior");
        ceButton.setBackground (cinzaClaro);
        ceButton.addActionListener
        (	
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoCe();
                }
            }
        );
        container.add(ceButton);

        Icon igual = new ImageIcon("igual.gif");
        Icon igual2 = new ImageIcon("igual2.gif");
        igualButton = new JButton(igual);
        igualButton.setRolloverIcon(igual2);
        igualButton.setMnemonic('=');
        igualButton.setToolTipText("CE: Gera o resultado da operação desejada");
        igualButton.setBackground (cinzaClaro);
        igualButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    controle.botaoIgual();
                }
            }
        );
        container.add(igualButton);
        
        Icon segundoPlano = new ImageIcon ("segundoPlano.gif");
        Icon segundoPlano2 = new ImageIcon ("segundoPlano2.gif");
        alteraCorSegundoPlanoButton = new JButton(segundoPlano);
        alteraCorSegundoPlanoButton.setRolloverIcon(segundoPlano2);
        alteraCorSegundoPlanoButton.setToolTipText("Altera a cor do segundo plano da calculadora");
        alteraCorSegundoPlanoButton.setBackground(cinzaClaro);
        alteraCorSegundoPlanoButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    cor = JColorChooser.showDialog(CalculadoraJanela.this, "Escolha a cor do segundo Plano", cor);
                    if (cor == null)
                        cor = Color.lightGray;
                    container.setBackground(cor);
                }
            }
        );
        container.add(alteraCorSegundoPlanoButton);
        
        Icon creditos = new ImageIcon ("creditos.gif");
        Icon creditos2 = new ImageIcon ("creditos2.gif");
        creditosButton = new JButton ("Créditos      ",creditos);
        creditosButton.setRolloverIcon(creditos2);
        creditosButton.setBackground (cinzaClaro);
        creditosButton.setToolTipText("Clique para obter créditos");
        creditosButton.addActionListener
        (
            new ActionListener()
            {
                public void actionPerformed (ActionEvent e)
                {
                    JOptionPane.showMessageDialog(
                    null,
                    "",
                    "Calculadora 1.0 - Smaither International Finances Co. - Wanderlúcio Alves de Oliveira",
                    SwingConstants.NORTH,
                    getTituloCredito());
                }
            }
        );
        container.add (creditosButton);
        
    }
    
  
    public static void main (String args[])
    {
        CalculadoraJanela janela = new CalculadoraJanela();
        janela.addWindowListener
        (
            new WindowAdapter()
            {
                public void windowClosing (WindowEvent e)
                {
                    System.exit(0);
                }
            }
        );
        janela.setSize(305, 390);
        janela.setResizable(false);
        janela.setVisible(true);
    }
    
    protected void alteraCorDoOperadorSelecionado()
    {
        if (controle.getControlaSomaButton() == controle.PRESSIONADO())
        {
            somaButton.setBackground (cinzaEscuro);
            subtraiButton.setBackground (cinzaClaro);
            multiplicaButton.setBackground (cinzaClaro);
            divideButton.setBackground (cinzaClaro);
            modButton.setBackground (cinzaClaro);
        }
        else if (controle.getControlaSubtraiButton() == controle.PRESSIONADO())
        {
            somaButton.setBackground (cinzaClaro);
            subtraiButton.setBackground (cinzaEscuro);
            multiplicaButton.setBackground (cinzaClaro);
            divideButton.setBackground (cinzaClaro);
            modButton.setBackground (cinzaClaro);
        }
        else if (controle.getControlaMultiplicaButton() == controle.PRESSIONADO())
        {
            somaButton.setBackground (cinzaClaro);
            subtraiButton.setBackground (cinzaClaro);
            multiplicaButton.setBackground (cinzaEscuro);
            divideButton.setBackground (cinzaClaro);
            modButton.setBackground (cinzaClaro);
        }
        else if (controle.getControlaDivideButton() == controle.PRESSIONADO())
        {
            somaButton.setBackground (cinzaClaro);
            subtraiButton.setBackground (cinzaClaro);
            multiplicaButton.setBackground (cinzaClaro);
            divideButton.setBackground (cinzaEscuro);
            modButton.setBackground (cinzaClaro);
        }
        else if (controle.getControlaModButton() == controle.PRESSIONADO())
        {
            somaButton.setBackground (cinzaClaro);
            subtraiButton.setBackground (cinzaClaro);
            multiplicaButton.setBackground (cinzaClaro);
            divideButton.setBackground (cinzaClaro);
            modButton.setBackground (cinzaEscuro);
        }
    }
    
    protected void corPadraoDosOperadores()
    {
        somaButton.setBackground (cinzaClaro);
        subtraiButton.setBackground (cinzaClaro);
        multiplicaButton.setBackground (cinzaClaro);
        divideButton.setBackground (cinzaClaro);
        modButton.setBackground (cinzaClaro);
    }
    
    protected void excessao()
    {
        JOptionPane.showMessageDialog(
            null,
            "ERRO:\n- Voce não pode dividir um valor por zero!\n\n\n" +
            "IMPOSSÍVEL CALCULAR  =  " + controle.getPrimeiroValor() + "  /  " + getResultadoField() +
            "\n\n\nSOLUÇÃO:\n- Digite um outro valor para o denominador.",
            "Calculadora - Wanderlúcio Alves de Oliveira",
            SwingConstants.NORTH,
            getTituloCredito());
    }
    
    protected Icon getTituloCredito()
    {
        return tituloCredito;
    }
    
    private String getTextoTitulo()
    {
        return "            " + "CRÉDITOS" + "            ";
    }

    protected void setResultadoField(String entrada)
    {
        resultadoField.setText(entrada);
    }

    protected String getResultadoField()
    {
        return resultadoField.getText();
    }
}
Código fonte do controle:
package calculadora;

import calculadora.CalculadoraJanela;
import java.awt.Color;
import java.awt.Font;
import javax.swing.JOptionPane;

public class CalculadoraControle extends Object
{
    private CalculadoraJanela janela = null;
    
    //Recebe os valores numéricos
    private float resultado, primeiroValor, segundoValor;
    
    //Controla resultadoField
    private final int PODEALTERAR = 1;
    private final int NAOPODEALTERAR = 2;
    
    private int controlaResultadoField = PODEALTERAR;
    
    //Controla primeiroValor e segundoValor
    private final int VAZIO = 1;
    private final int COMVALOR = 2;
    
    private int controlaPrimeiroValor = VAZIO;
    private int controlaSegundoValor = VAZIO;
    
    //Controla operadores
    private final int SOMA = 1;
    private final int SUBTRAI = 2;
    private final int MULTIPLICA = 3;
    private final int DIVIDE = 4;
    private final int MOD = 5;
    private final int NAOSELECIONADO = 6;
    
    private int operacao = NAOSELECIONADO;
    
    //Controla usuário digitando
    private final int USUARIODIGITANDO = 1;
    private final int USUARIONAODIGITANDO = 2;
    
    private int controlaUsuario = USUARIONAODIGITANDO;
    
    //Controla botões
    private final int NAOPRESSIONADO = 1;
    private final int PRESSIONADO = 2;
    private final int PRESSIONADOAGORA = 3;
    
    private int controlaSomaButton = NAOPRESSIONADO;
    private int controlaSubtraiButton = NAOPRESSIONADO;
    private int controlaMultiplicaButton = NAOPRESSIONADO;
    private int controlaDivideButton = NAOPRESSIONADO;
    private int controlaModButton = NAOPRESSIONADO;
    private int controlaPontoButton = NAOPRESSIONADO;
    
    public CalculadoraControle()
    {
    }

    public CalculadoraControle(Object janela)
    {
        if(janela instanceof CalculadoraJanela)
        {
            this.janela = (CalculadoraJanela) janela;
        }
    }

    protected void botao7()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "7");
    }

    protected void botao8()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "8");
    }

    protected void botao9()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "9");
    }

    protected void botaoSoma()
    {
        if (controlaSomaButton != PRESSIONADO)
        {
            controlaSomaButton = PRESSIONADOAGORA;
            controlaBotaoPressionado();
            janela.alteraCorDoOperadorSelecionado();
            controlaPontoButton = NAOPRESSIONADO;
        }
        if (controlaUsuario == USUARIODIGITANDO)
        {
            if (controlaPrimeiroValor == COMVALOR)
            {
                segundoValor = Float.parseFloat(janela.getResultadoField());
                controlaSegundoValor = COMVALOR;
                geraResultado();
                operacao = SOMA;
            }
            else
            {
                primeiroValor = Float.parseFloat(janela.getResultadoField());
                controlaPrimeiroValor = COMVALOR;
                operacao = SOMA;
                controlaResultadoField = PODEALTERAR;
                controlaUsuario = USUARIONAODIGITANDO;
                controlaPontoButton = NAOPRESSIONADO;
            }
        }
        else
        {
            operacao = SOMA;
        }
    }

    protected void botao4()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "4");
    }

    protected void botao5()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "5");
    }

    protected void botao6()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "6");
    }
    
    protected void botaoSubtrai()
    {
        if (controlaSubtraiButton != PRESSIONADO)
        {
            controlaSubtraiButton = PRESSIONADOAGORA;
            controlaBotaoPressionado();
            janela.alteraCorDoOperadorSelecionado();
            controlaPontoButton = NAOPRESSIONADO;
        }
        if (controlaUsuario == USUARIODIGITANDO)
        {
            if (controlaPrimeiroValor == COMVALOR)
            {
                segundoValor = Float.parseFloat(janela.getResultadoField());
                controlaSegundoValor = COMVALOR;
                geraResultado();
                operacao = SUBTRAI;
            }
            else
            {
                primeiroValor = Float.parseFloat(janela.getResultadoField());
                controlaPrimeiroValor = COMVALOR;
                operacao = SUBTRAI;
                controlaResultadoField = PODEALTERAR;
                controlaUsuario = USUARIONAODIGITANDO;
                controlaPontoButton = NAOPRESSIONADO;
            }
        }
        else
        {
            operacao = SUBTRAI;
        }
    }

    protected void botao1()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "1");
    }

    protected void botao2()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "2");
    }

    protected void botao3()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "3");
    }

    protected void botaoMultiplica()
    {
        if (controlaMultiplicaButton != PRESSIONADO)
        {
            controlaMultiplicaButton = PRESSIONADOAGORA;
            controlaBotaoPressionado();
            janela.alteraCorDoOperadorSelecionado();
            controlaPontoButton = NAOPRESSIONADO;
        }
        if (controlaUsuario == USUARIODIGITANDO)
        {
            if (controlaPrimeiroValor == COMVALOR)
            {
                segundoValor = Float.parseFloat(janela.getResultadoField());
                controlaSegundoValor = COMVALOR;
                geraResultado();
                operacao = MULTIPLICA;
            }
            else
            {
                primeiroValor = Float.parseFloat(janela.getResultadoField());
                controlaPrimeiroValor = COMVALOR;
                operacao = MULTIPLICA;
                controlaResultadoField = PODEALTERAR;
                controlaUsuario = USUARIONAODIGITANDO;
                controlaPontoButton = NAOPRESSIONADO;
            }
        }
        else
        {
            operacao = MULTIPLICA;
        }
    }
    
    protected void botaoZero()
    {
        controlaResultadoField();
        janela.setResultadoField(janela.getResultadoField() + "0");
    }
    
    protected void botaoMod()
    {
        if (controlaModButton != PRESSIONADO)
        {
            controlaModButton = PRESSIONADOAGORA;
            controlaBotaoPressionado();
            janela.alteraCorDoOperadorSelecionado();
            controlaPontoButton = NAOPRESSIONADO;
        }
        if (controlaUsuario == USUARIODIGITANDO)
        {
            if (controlaPrimeiroValor == COMVALOR)
            {
                segundoValor = Float.parseFloat(janela.getResultadoField());
                controlaSegundoValor = COMVALOR;
                geraResultado();
                operacao = MOD;
            }
            else
            {
                primeiroValor = Float.parseFloat(janela.getResultadoField());
                controlaPrimeiroValor = COMVALOR;
                operacao = MOD;
                controlaResultadoField = PODEALTERAR;
                controlaUsuario = USUARIONAODIGITANDO;
                controlaPontoButton = NAOPRESSIONADO;
            }
        }
        else
        {
            operacao = MOD;
        }
    }

    protected void botaoPonto()
    {
        if (controlaPontoButton == NAOPRESSIONADO)
        {
            controlaPontoButton = PRESSIONADO;
            controlaResultadoField = NAOPODEALTERAR;
            if (controlaUsuario == USUARIONAODIGITANDO)
            {
                janela.setResultadoField("0.");
                controlaUsuario = USUARIODIGITANDO;
            }
            else
            {
                janela.setResultadoField(janela.getResultadoField() + ".");
            }
        }
    }

    protected void botaoDivide()
    {
        if (controlaDivideButton != PRESSIONADO)
        {
            controlaDivideButton = PRESSIONADOAGORA;
            controlaBotaoPressionado();
            janela.alteraCorDoOperadorSelecionado();
            controlaPontoButton = NAOPRESSIONADO;
        }
        if (controlaUsuario == USUARIODIGITANDO)
        {
            if (controlaPrimeiroValor == COMVALOR)
            {
                segundoValor = Float.parseFloat(janela.getResultadoField());
                controlaSegundoValor = COMVALOR;
                geraResultado();
                operacao = DIVIDE;
            }
            else
            {
                primeiroValor = Float.parseFloat(janela.getResultadoField());
                controlaPrimeiroValor = COMVALOR;
                operacao = DIVIDE;
                controlaResultadoField = PODEALTERAR;
                controlaUsuario = USUARIONAODIGITANDO;
                controlaPontoButton = NAOPRESSIONADO;
            }
        }
        else
        {
            operacao = DIVIDE;
        }
    }

    protected void botaoLimpar()
    {
        primeiroValor = 0;
        controlaPrimeiroValor = VAZIO;
        segundoValor = 0;
        controlaSegundoValor = VAZIO;
        resultado = 0;
        janela.setResultadoField("0.0");
        operacao = NAOSELECIONADO;
        controlaResultadoField = PODEALTERAR;
        controlaUsuario = USUARIONAODIGITANDO;
        controlaSomaButton = NAOPRESSIONADO;
        controlaSubtraiButton = NAOPRESSIONADO;
        controlaMultiplicaButton = NAOPRESSIONADO;
        controlaDivideButton = NAOPRESSIONADO;
        controlaModButton = NAOPRESSIONADO;
        controlaPontoButton = NAOPRESSIONADO;
        janela.corPadraoDosOperadores();
    }

    protected void botaoCe()
    {
        janela.setResultadoField("0.0");
        controlaResultadoField = PODEALTERAR;
        controlaUsuario = USUARIONAODIGITANDO;
        controlaPontoButton = NAOPRESSIONADO;
    }

    protected void botaoIgual()
    {
        controlaPontoButton = NAOPRESSIONADO;
        if (controlaUsuario == USUARIODIGITANDO)
        {
            if (controlaPrimeiroValor == COMVALOR)
            {
                segundoValor = Float.parseFloat(janela.getResultadoField());
                controlaSegundoValor = COMVALOR;
                geraResultado();
            }
            else
            {
                primeiroValor = Float.parseFloat(janela.getResultadoField());
                controlaPrimeiroValor = COMVALOR;
                controlaResultadoField = PODEALTERAR;
                controlaUsuario = USUARIONAODIGITANDO;
            }
        }
    }
    
    protected void controlaResultadoField()
    {
        if (controlaResultadoField == PODEALTERAR)
        {
            janela.setResultadoField("");
        }
        padraoEntreBotoesNumericos();
    }
    
    protected void geraResultado()
    {
        OperadoresMatematicos operador = new OperadoresMatematicos();
        switch (operacao)
        {
            case SOMA: resultado = operador.soma(primeiroValor, segundoValor); break;
            case SUBTRAI: resultado = operador.subtrai(primeiroValor, segundoValor); break;
            case MULTIPLICA: resultado = operador.multiplica(primeiroValor, segundoValor); break;
            case DIVIDE: resultado = operador.divide(primeiroValor, segundoValor); break;
            case MOD: resultado = operador.mod(primeiroValor, segundoValor); break;
        }
        padraoPosResultado();
    }
    
    protected void padraoEntreBotoesNumericos()
    {
        controlaResultadoField = NAOPODEALTERAR;
        controlaUsuario = USUARIODIGITANDO;
    }
    
    protected void padraoPosResultado()
    {
        if (operacao == DIVIDE && segundoValor == 0 ||
            operacao == MOD && segundoValor == 0)
        {
            janela.excessao();
        }
        else
        {
            janela.setResultadoField(""+ resultado);
            primeiroValor = resultado;
            controlaPrimeiroValor = COMVALOR;
            controlaSegundoValor = VAZIO;
        }
        controlaResultadoField = PODEALTERAR;
        controlaUsuario = USUARIONAODIGITANDO;
        controlaPontoButton = NAOPRESSIONADO;
    }

    protected void controlaBotaoPressionado()
    {
        if (controlaSomaButton == PRESSIONADOAGORA)
        {
            controlaSomaButton = PRESSIONADO;
            controlaSubtraiButton = NAOPRESSIONADO;
            controlaMultiplicaButton = NAOPRESSIONADO;
            controlaDivideButton = NAOPRESSIONADO;
            controlaModButton = NAOPRESSIONADO;
        }
        else if (controlaSubtraiButton == PRESSIONADOAGORA)
        {
            controlaSomaButton = NAOPRESSIONADO;
            controlaSubtraiButton = PRESSIONADO;
            controlaMultiplicaButton = NAOPRESSIONADO;
            controlaDivideButton = NAOPRESSIONADO;
            controlaModButton = NAOPRESSIONADO;
        }
        else if (controlaMultiplicaButton == PRESSIONADOAGORA)
        {
            controlaSomaButton = NAOPRESSIONADO;
            controlaSubtraiButton = NAOPRESSIONADO;
            controlaMultiplicaButton = PRESSIONADO;
            controlaDivideButton = NAOPRESSIONADO;
            controlaModButton = NAOPRESSIONADO;
        }
        else if (controlaDivideButton == PRESSIONADOAGORA)
        {
            controlaSomaButton = NAOPRESSIONADO;
            controlaSubtraiButton = NAOPRESSIONADO;
            controlaMultiplicaButton = NAOPRESSIONADO;
            controlaDivideButton = PRESSIONADO;
            controlaModButton = NAOPRESSIONADO;
        }
        else if (controlaModButton == PRESSIONADOAGORA)
        {
            controlaSomaButton = NAOPRESSIONADO;
            controlaSubtraiButton = NAOPRESSIONADO;
            controlaMultiplicaButton = NAOPRESSIONADO;
            controlaDivideButton = NAOPRESSIONADO;
            controlaModButton = PRESSIONADO;
        }
    }

    protected float getPrimeiroValor()
    {
        return primeiroValor;
    }

    protected int getControlaSomaButton()
    {
        return controlaSomaButton;
    }

    protected int getControlaSubtraiButton()
    {
        return controlaSubtraiButton;
    }

    protected int getControlaMultiplicaButton()
    {
        return controlaMultiplicaButton;
    }

    protected int getControlaDivideButton()
    {
        return controlaDivideButton;
    }

    protected int getControlaModButton()
    {
        return controlaModButton;
    }

    protected int getControlaPontoButton()
    {
        return controlaPontoButton;
    }
    
    protected int PRESSIONADO()
    {
        return PRESSIONADO;
    }
}
Código fonte das operações:
package calculadora;

public class OperadoresMatematicos
{
    public float soma(float primeiroValor, float segundoValor)
    {
        return primeiroValor + segundoValor;
    }
    
    public float subtrai(float primeiroValor, float segundoValor)
    {
        return primeiroValor - segundoValor;
    }
    
    public float multiplica(float primeiroValor, float segundoValor)
    {
        return primeiroValor * segundoValor;
    }
    
    public float divide(float primeiroValor, float segundoValor)
    {
        return primeiroValor / segundoValor;
    }
    
    public float mod(float primeiroValor, float segundoValor)
    {
        return primeiroValor % segundoValor;
    }
}
Um grande abraço,
W

Para receber os GIFS envia um e-mail para mim que te mando. [email removido]

Um grande abraço,

S

se vc quiser eu tenho uma calculadora pronta desta forma

Ela roda no win, linux, mac e na internet como applet

http://www.tritti.com.br/java/sandecocalc/NetCalc.HTM

Ve ai … sandeco

Criado 14 de julho de 2005
Ultima resposta 8 de ago. de 2005
Respostas 6
Participantes 5