Olá povo, blz? Estou com problemas para criar uma calculadora, parecido com o calc do Windows.
Tenho uma classe que cuida da interface, e outra que cuida dos cálculos. O problema é na hora de usar a classe “Cálculos” na interface, aparentemente os valores que vou guardando no objeto não é guardado (eu heim?). Falo isso porque testei a classe Cálculos em outra classe e funcionou perfeitamente.
Chega de embromação e vamos aos códigos:
Classe Calculadora:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculadora extends JFrame {
JPanel grid01;
JPanel grid02;
JTextField campoCalculadora;
JButton um;
JButton dois;
JButton tres;
JButton quatro;
JButton cinco;
JButton seis;
JButton sete;
JButton oito;
JButton nove;
JButton zero;
JButton adicao;
JButton subtracao;
JButton multiplicacao;
JButton divisao;
JButton limpar;
JButton igual;
JButton botaoBranco03;
String auxCampoCalculadora;
int contCampoCalculadora;
public Calculadora(){
//Instanciando objetos de suporte
auxCampoCalculadora = new String();
contCampoCalculadora = 1;
//Instanciando os objetos do 1ºJPanel
campoCalculadora = new JTextField();
//Instanciando os objetos do 2ºJPanel
um = new JButton("1");
dois = new JButton("2");
tres = new JButton("3");
quatro = new JButton("4");
cinco = new JButton("5");
seis = new JButton("6");
sete = new JButton("7");
oito = new JButton("8");
nove = new JButton("9");
adicao = new JButton("+");
subtracao = new JButton("-");
divisao = new JButton("/");
multiplicacao = new JButton("*");
limpar = new JButton("C");
igual = new JButton("=");
botaoBranco03 = new JButton(" ");
//Adicionando os objetos no 1ºJPanel
grid01 = new JPanel(new GridLayout(1,1));
grid01.add(campoCalculadora);
//Adicionando os objetos no 2ºJPanel
grid02 = new JPanel(new GridLayout(4,4));
grid02.add(um);
grid02.add(dois);
grid02.add(tres);
grid02.add(adicao);
grid02.add(quatro);
grid02.add(cinco);
grid02.add(seis);
grid02.add(subtracao);
grid02.add(sete);
grid02.add(oito);
grid02.add(nove);
grid02.add(multiplicacao);
grid02.add(limpar);
grid02.add(igual);
grid02.add(botaoBranco03);
grid02.add(divisao);
//Adicionado as acoes para os objetos
Ouvinte ov = new Ouvinte();
//Adicionando acao dos botoes
um.addActionListener(ov);
dois.addActionListener(ov);
tres.addActionListener(ov);
quatro.addActionListener(ov);
cinco.addActionListener(ov);
seis.addActionListener(ov);
sete.addActionListener(ov);
oito.addActionListener(ov);
nove.addActionListener(ov);
limpar.addActionListener(ov);
igual.addActionListener(ov);
adicao.addActionListener(ov);
this.getContentPane().add(grid01, BorderLayout.CENTER);
this.getContentPane().add(grid02, BorderLayout.SOUTH);
pack();
//setSize(300,200);
this.setTitle("Cadastra Pessoa");
this.setVisible(true);
this.setResizable(false);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args){
Calculadora secaoCalculadora = new Calculadora();
}
class Ouvinte implements ActionListener{
public void actionPerformed(ActionEvent evt){
Calculos calc = new Calculos();
if(evt.getSource() == um){
campoCalculadora.setText(campoCalculadora.getText()+"1");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == dois){
campoCalculadora.setText(campoCalculadora.getText()+"2");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == tres){
campoCalculadora.setText(campoCalculadora.getText()+"3");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == quatro){
campoCalculadora.setText(campoCalculadora.getText()+"4");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == cinco){
campoCalculadora.setText(campoCalculadora.getText()+"5");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == seis){
campoCalculadora.setText(campoCalculadora.getText()+"6");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == sete){
campoCalculadora.setText(campoCalculadora.getText()+"7");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == oito){
campoCalculadora.setText(campoCalculadora.getText()+"8");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == nove){
campoCalculadora.setText(campoCalculadora.getText()+"9");
if(calc.getTipoOperacao() == 0)
calc.setPrimeiroValor(campoCalculadora.getText());
else
calc.setSegundoValor(campoCalculadora.getText());
}
if(evt.getSource() == limpar){
}
if(evt.getSource() == igual){
campoCalculadora.setText(calc.calcularResultado());
}
if(evt.getSource() == adicao){
if(calc.getTipoOperacao() == 0){
calc.setTipoOperacao(1);
campoCalculadora.setText("");
}
else{
calc.calcularResultado();
calc.setTipoOperacao(1);
}
}
}
}
}
Classe Cálculos:
import javax.swing.JOptionPane;
public class Calculos {
private String primeiroValor;
private String segundoValor;
private int tipoOperacao;
private String resultado;
public Calculos(){
primeiroValor = new String();
segundoValor = new String();
tipoOperacao = 0;
resultado = new String();
}
public String getPrimeiroValor() {
return primeiroValor;
}
public void setPrimeiroValor(String JTextPrimeiroValor) {
primeiroValor = JTextPrimeiroValor;
//
// if(primeiroValor.isEmpty())
// JOptionPane.showMessageDialog(null, "String 1 Vazia");
// else
// JOptionPane.showMessageDialog(null, "String 1 nao esta vazia");
}
public void limpaPrimeiroValor() {
segundoValor = "";
}
public String getSegundoValor() {
return segundoValor;
}
public void setSegundoValor(String JTextSegundoValor) {
segundoValor = JTextSegundoValor;
//if(segundoValor.isEmpty())
//JOptionPane.showMessageDialog(null, "String 2 Vazia");
//else
//JOptionPane.showMessageDialog(null, "String 2 nao esta vazia");
}
public void limpaSegundoValor() {
segundoValor = "";
}
public int getTipoOperacao() {
return tipoOperacao;
}
public void setTipoOperacao(int tipoOperacao) {
this.tipoOperacao = tipoOperacao;
}
public String calcularResultado(){
int p1 = 0;
int p2 = 0;
try{
p1 = Integer.parseInt(primeiroValor);
p2 = Integer.parseInt(segundoValor);
}
catch(NumberFormatException e){
JOptionPane.showMessageDialog(null, "AAAAAAAAAAAAAAA");
}
switch(tipoOperacao){
case 1:
resultado = String.valueOf(p1+p2);
break;
//só fiz a adicao, por enquanto
}
return resultado;
}
}
Classe Só de Teste:
import javax.swing.JOptionPane;
public class ClasseTeste {
public static void main(String[] args){
Calculos lol = new Calculos();
lol.setPrimeiroValor("7");
lol.setSegundoValor("5");
lol.setTipoOperacao(1);
System.out.println("Resultado "+lol.calcularResultado());
}
}
Senhores, agradeço a atenção!