Ir ao conteúdo
  • Cadastre-se

Java Projeto Calculadora - O que está errado


Posts recomendados

Boa tarde pessoal, estou tentando fazer uma calculadora porém não estou conseguindo, estou copiando o código de um livro e pelo que vi está tudo digitado corretamente, porém não sei se deveria criar mais classes ou algo do tipo, estou usando o Eclipse e criei apenas um projeto e uma classe e coloquei todo o código conforme código abaixo:

Quem puder ajudar agradeço muito!

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.text.NumberFormat;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

public class Calculadora extends JFrame implements KeyListener{
	private JButton botao1, botao2, botao3, botao4, botao5, botao6, botao7, botao8,
	botao9, botao0, botaoC, botaoCE, botaoDiv, botaoMultip, botaoMenos, botaoMais, botaoVirgula, 
	botaoTotal, botaoPerc, botaoBackspace;
	
	private JTextArea roloPapel;
	private JLabel visor, keyCodigo;
	private JScrollPane scroll;
	private double soma = 0;
	private String valor = "", operador = "", valorAnterior = "";
	private Container container;
	private GridBagConstraints constraints;
	private JRadioButton botao2dig, botao4dig, botao6dig;
	private ButtonGroup botaoDecimais;
	private int casasDecimais = 2;
	
	private class trataEventosAcao implements ActionListener {
		public void actionPerformed ( ActionEvent event){
			if (event.getSource() == botaoC) teclouC();
			else if ( event.getSource() == botaoCE) teclou CE();
			else if ( event.getSource() == botaoPerc) teclouP();
			else if ( event.getSource() == botaoVirgula) teclouVirgula();
			else if ( event.getSource() == botaoBackspace) teclouBackspace();
			else if ( event.getSource() == botao1) teclouNumeros("1");
			else if ( event.getSource() == botao2) teclouNumeros("2");
			else if ( event.getSource() == botao3) teclouNumeros("3");
			else if ( event.getSource() == botao4) teclouNumeros("4");
			else if ( event.getSource() == botao5) teclouNumeros("5");
			else if ( event.getSource() == botao6) teclouNumeros("6");
			else if ( event.getSource() == botao7) teclouNumeros("7");
			else if ( event.getSource() == botao8) teclouNumeros("8");
			else if ( event.getSource() == botao9) teclouNumeros("9");
      		else if ( event.getSource() == botao0) teclouNumeros("0");
		    else if ( event.getSource() == botaoMais) teclouMais();
			else if ( event.getSource() == botaoMenos)teclouMenos();
			else if ( event.getSource() == botaoDiv) teclouDIV();
			else if ( event.getSource() == botaoMultip)teclouMultip();
			else if ( event.getSource() == botaoTotal) teclouEnter();
			
		}
		}
       Private class trataEventosFocus implements FocusListener {
    	   public void focusGained (FocusEvent event){
    		   
    	   }
    	   public void focusLost (FocusEvent event)
    	   {
    		   
    	   }
}
     private class trataEventosRadio implements ItemListener {
    	 public void itemStateChanged (ItemEvent event){
    		 if(event.getSource() == botao2dig){
    			 casasDecimais = 2;
    		 }
    		 if (event.getSource() == botao4dig){
    			 casasDecimais = 4;
    		 }
    		 if (event.getSource() == botao6dig){
    			 casasDecimais = 6;
    		 }
    	 }
     }
      public void keyPressed(KeyEvent e){
    	  if (e.getKeyCode() == e.VK_ESCAPE){
    		  int selectedOption = JOptionPane.showConfirmDialog(this, "Deseja sair realmente?", "Atenção", 
    				  JOptionPane.YES_NO_OPTION);
    		  if(selectedOption == JOptionPane.YES_OPTION){
    			  dispose();
    			  System.exit(0);
    			      		  }
    	  }
      if (e.getKeyCode()== 67)teclouC();
      if (e.getKeyCode()== 69)teclouCE();
      if (e.getKeyCode()== 8)teclouBackspace();
      if (e.getKeyCode()== 110)teclouVirgula();
      if(((e.getKeyCode() >= e.VK_0) && (e.getKeyCode() <= e.VK_9)) ||
    		  ((e.getKeyCode() >= e.VK_NUMPAD0)&& (e.getKeyCode() <= e.VK_NUMPAD9)))
    	  teclouNumeros(""+e.getKeyChar());
      if ((e.getKeyCode()== 61)||(e.getKeyCode() == 107)) teclouMais();
      if ((e.getKeyCode()== 45)||(e.getKeyCode() ==109)) teclouMenos();
      if ((e.getKeyCode()== 59)||(e.getKeyCode() ==111))teclouDiv();
      if (e.getKeyCode() == 106) teclouMultip();
      if (e.getKeyCode() == 80)teclouP();
      if (e.getKeyCode() == 10)teclouEnter();
      }
      public void KeyReleased(KeyEvent e){
    	        }
    	  public void Keytyped(KeyEvent e){
    		  
    	  }
    	  public void teclouC(){
    		  valor="0";
    		  visor.setText(formatStrNumerica(valor,casasDecimais));
    	  }
    	  public void teclouCE(){
    		  valor = "0";
    		  soma = 0;
    		  visor.setText(formatStrNumerica(valor,casasDecimais));
    		  roloPapel.append(alinhaStringDir("--------------------"+ "\n"));
    		  roloPapel.append(alinhaStringDir(""+ "\n"));
    	  }
    	  public void teclouP(){
    		  roloPapel.append(alinhaStringDir(formatStrNumerica(valor,casasDecimais)+"%"+"\n"));
    		  roloPapel.append(alinhaStringDir("--------------------"+"\n"));
    		  if (operador == "*") soma = soma * (Double.parseDouble(valor)/100);
    		  else if (operador == "/") soma = soma / (Double.parseDouble(valor)/100);
    		  roloPapel.append(alinhaStringDir(formatStrNumerica(""+soma, casasDecimais) + "=" + "/n"));
    		  roloPapel.append(alinhaStringDir(""+ "\n");
    		  visor.setText(formatStrNumerica(""+soma,casasDecimais))/
    		  valorAnterior = ""+soma;
    		  soma = 0 ;
    		  valor= "";
    	  }
    	  public void teclouVirgula(){
    		  if (valor.lastIndexOf(".")== -1) valor = valor +".";
    		  visor.setText(valor);
    	  }
    	  public void teclouBackspace(){
    		  if (valor.length() == 1) valor = "0";
    		  else valor = valor.substring(0, valor.length()-1);
    		  visor.setText(valor);
    	  }
    	  public void teclouNumeros(String s){
    		  if(valor.length() <=14){
    			  if(valor == "0") valor = "";
    			  valor = valor + s;
    			  visor.setText(valor);
    		  }
    	  }
    	   public void teclouMais(){
    		   if (valor =="") valor = valorAnterior;
    		   roloPapel.append(alinhaStringDir(formatStrNumerica(valor,casasDecimais)+"+"+"/n"));
    		   soma = soma + Double.parseDouble(valor);
    		   visor.setText(formatStrNumerica(""+ soma,casasDecimais));
    		   valorAnterior = valor;
    		   valor="";
    		   operador = "+";
    		      		  }
    	   public void teclouMenos(){
    		   if (valor =="") valor = valorAnterior;
    		   roloPapel.append(alinhaStringDir(formatStrNumerica(valor,casasDecimais)+"-"+"/n"));
    		   soma = soma - Double.parseDouble(valor);
    		   visor.setText(formatStrNumerica(""+ soma,casasDecimais));
    		   valorAnterior = valor;
    		   valor="";
    		   operador = "-";
    		      		  }
    	   public void teclouDiv(){
    		   if (valor =="") valor = valorAnterior;
    		   roloPapel.append(alinhaStringDir("----------------------"+"/n"));
    		   roloPapel.append(alinhaStringDir(""+"/n"));
    		   roloPapel.append(alinhaStringDir(formatStrNumerica(valor,casasDecimais)+"/"+"/n"));
    		   soma = Double.parseDouble(valor);
    		   visor.setText(formatStrNumerica(""+ soma,casasDecimais));
    		   valor="";
    		   operador = "/";
    		      		  }
    	   public void teclouMultip(){
    		   if (valor =="") valor = valorAnterior;
    		   roloPapel.append(alinhaStringDir("----------------------"+"/n"));
    		   roloPapel.append(alinhaStringDir(""+"/n"));
    		   roloPapel.append(alinhaStringDir(formatStrNumerica(valor,casasDecimais)+"*"+"/n"));
    		   soma = Double.parseDouble(valor);
    		   visor.setText(formatStrNumerica(""+ soma,casasDecimais));
    		   valor="";
    		   operador = "/";
    		      		  }
    	   public void teclouEnter(){
    		   if ((operador =="+")||(operador =="-")){
    			   roloPapel.append(alinhaStringDir("--------------------"+"/n"));
    			   roloPapel.append(alinhaStringDir(formatStrNumerica(""+soma,casasDecimais)+"T"+"/n"));
    		   }
    		   if ((operador =="/")&& (soma !=0)){
    			   roloPapel.append(alinhaStringDir(formatStrNumerica(valor,casasDecimais)+""+"/n"));
        		   roloPapel.append(alinhaStringDir("----------------------"+"/n"));
        		   soma = soma / Double.parseDouble(valor);
        		   roloPapel.append(alinhaStringDir(formatStrNumerica(""+soma,casasDecimais)+ "="+"/n"));
    		   }
    		   if (operador == "*"){
    			   roloPapel.append(alinhaStringDir(formatStrNumerica(valor,casasDecimais)+""+"/n"));
        		   roloPapel.append(alinhaStringDir("----------------------"+"/n"));
        		   soma = soma * Double.parseDouble(valor);
        		   roloPapel.append(alinhaStringDir(formatStrNumerica(""+soma,casasDecimais)+ "="+"/n"));
    		  }
    		   roloPapel.append(alinhaStringDir(""+"/n"));
    		   visor.setText(formatStrNumerica(""+soma,casasDecimais));
    		   valorAnterior = ""+soma;
    		   soma =0;
    		   valor = "";
    	   }
    	   
    	   public String alinhaStringDir(String s){
    		   String Alinhador = "";
    		   int i;
    		   for ( i = 0; i<(36 - s.length()); i++){
    			   alinhador = alinhador+"";
    		   }
    		   return alinhador+s;
    	   }
    	   
    	   public String formatStrNumerica(String s, int dig){
    		   DecimalFormat decimal = new DecimalFormat();
    		   decimal.setMinimumFractionDigits(dig);
    		   DecimalFormatSymbols simbolos = new DecimalFormatSymbols();
    		   simbolos.setGroupingSeparator(',');
    		   simbolos.setDecimalSeparator('.');
    		   decimal.setDecimalFormatSymbols(simbolos);
    		   return decimal.format(new java.math.BigDecimal(s));
    	   }
    	   
    	   private void addComponent ( Component component, int row, int column, int width, int height){
    		   constraints.gridx = column;
    		   constraints.gridy = row;
    		   constraints.gridwidth = width;
    		   constraints.gridheight = height;
    		   layout.setConstraints (component, constraints);
    		   container.add (component);
    	   }
    	    public Calculadora(){
    	    	super ("Calculadora 1.0");
    	    	container = getContentPane();
    	    	layout = new GridBagLayout();
    	    	container.setLayout(layout);
    	    	constraints = new GridBagConstraints();
    	    	
    	    	botao1 = new JButton(" 1 ");
    	    	botao2 = new JButton(" 2 ");
    	    	botao3 = new JButton(" 3 ");
    	    	botao4 = new JButton(" 4 ");
    	    	botao5 = new JButton(" 5 ");
    	    	botao6 = new JButton(" 6 ");
    	    	botao7 = new JButton(" 7 ");
    	    	botao8 = new JButton(" 8 ");
    	    	botao9 = new JButton(" 9 ");
    	    	botao0 = new JButton(" 0 ");
    	    	botaoC = new JButton(" C ");
    	    	botaoC.setToolTipText("Tecle C");
    	    	botaoCE = new JButton(" CE ");
    	    	botaoCE.setToolTipText("Tecle E");
    	    	botaoDiv = new JButton(" / ");
    	    	botaoMultip = new JButton(" * ");
    	    	botaoMenos = new JButton(" - ");
    	    	botaoMais = new JButton(" + ");
    	    	botaoVirgula = new JButton(" , ");
    	    	botaoVirgula.setToolTipText("Tecle,(Virgula)");
    	    	botaoTotal = new JButton(" T ");
    	    	botaoTotal.setToolTipText("Tecle ENTER");
    	    	botaoPerc = new JButton ("%");
    	    	botaoPerc.setToolTipText("Tecle P");
    	    	botaoBackspace = new JButton ("<");
    	    	botaoBackspace.setToolTipText("Tecle Backspace");
    	    	keyCodigo = new JLabel ("0");
    	    	visor = new JLabel("0");
    	    	visor = new JLabel ("0.00");
    	    	visor.setHorizontalAlignment(SwingConstants.RIGHT);
    	    	visor.setFont(new Font("Courier New", Font.BOLD,16));
    	    	visor.setForeground(Color.RED);
    	    	visor.setToolTipText("Valores até 14 digitos");
    	    	
    	    	roloPapel = new JTextArea(12,15);
    	    	roloPapel.setEditable(false);
    	    	roloPapel.setFont(new Font("Courier New", Font.PLAIN,11));
    	    	scroll = new JScrollPane(roloPapel, ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, 
    	    			ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    	    	
    	    	scroll.setBorder(new LineBorder(Color.pink, 3, true));
    	    	botao2dig = new JRadioButton("2", true);
    	    	botao4dig = new JRadioButton("4", false);
    	    	botao6dig = new JRadioButton("6 : Digitos Decimais", false);
    	    	botaoDecimais = new ButtonGroup();
    	    	botaoDecimais.add(botao2dig);
    	    	botaoDecimais.add(botao4dig);
    	    	botaoDecimais.add(botao6dig);
    	    	
    	    	
    	    	visor.setFocusable(true);
    	    	botao1.setFocusable(false);
    	    	botao2.setFocusable(false);
    	    	botao3.setFocusable(false);
    	    	botao4.setFocusable(false);
    	    	botao5.setFocusable(false);
    	    	botao6.setFocusable(false);
    	    	botao7.setFocusable(false);
    	    	botao8.setFocusable(false);
    	    	botao9.setFocusable(false);
    	    	botao0.setFocusable(false);
    	    	botaoC.setFocusable(false);
    	    	botaoCE.setFocusable(false);
    	    	botaoMais.setFocusable(false);
    	    	botaoMenos.setFocusable(false);
    	    	botaoDiv.setFocusable(false);
    	    	botaoPerc.setFocusable(false);
    	    	botaoMultip.setFocusable(false);
    	    	roloPapel.setFocusable(false);
    	    	botaoVirgula.setFocusable(false);
    	    	botaoTotal.setFocusable(false);
    	    	botaoBackspace.setFocusable(false);
    	    	botao2dig.setFocusable(false);
    	    	botao4dig.setFocusable(false);
    	    	botao6dig.setFocusable(false);
    	    	
    	    	constraints.anchor = GridBagConstraints.WEST;
    	    	constraints.weightx = 0; 
    	    	constraints.weighty = 1;
    	    	constraints.fill = GridBagConstraints.BOTH;
    	    	addComponent(scroll, 0, 0, 5, 1);
    	    	addComponent(visor, 1, 0, 5, 1);
    	    	addComponent(botao2dig, 2,0,1,1);
    	    	addComponent(botao4dig, 2,1,1,1);
    	    	addComponent(botao6dig, 2,2,3,1);
    	    	constraints.weightx = 0;
    	    	constraints.weighty = 5; 
    	    	addComponent(botaoPerc, 3,0,1,1);
    	    	addComponent(botaoCE, 3,4,1,1);
    	    	addComponent(botaoC, 4,4,1,1);
    	    	addComponent(botaoBackspace, 5,4,1,1);
    	    	addComponent(botaoDiv, 3,1,1,1);
    	    	addComponent(botaoMultip, 3,2,1,1);
    	    	addComponent(botaoMenos, 3,3,1,1);
    	    	addComponent(botao7, 4,0,1,1);
    	    	addComponent(botao8, 4,1,1,1);
    	    	addComponent(botao9, 4,2,1,1);
    	    	addComponent(botaoMais, 4,3,1,1);
    	    	addComponent(botao4, 5,0,1,1);
    	    	addComponent(botao5, 5,1,1,1);
    	    	addComponent(botao6, 5,2,1,1);
    	    	addComponent(botaoVirgula, 5,3,1,1);
    	    	addComponent(botao1, 6,0,1,1);
    	    	addComponent(botao2, 6,1,1,1);
    	    	addComponent(botao3, 6,2,1,1);
    	    	addComponent(botao0, 6,3,1,1);
    	    	addComponent(botaoTotal, 6,4,1,1);
    	    	
    	    	trataEventosAcao handlerAcao = new trataEventosAcao();
    	    	botaoC.addActionListener(handlerAcao);
    	    	botaoCE.addActionListener(handlerAcao);
    	    	botaoPerc.addActionListener(handlerAcao);
    	    	botaoDiv.addActionListener(handlerAcao);
    	    	botaoMultip.addActionListener(handlerAcao);
    	    	botaoMenos.addActionListener(handlerAcao);
    	    	botaoMais.addActionListener(handlerAcao);
    	    	botaoTotal.addActionListener(handlerAcao);
    	    	botaoVirgula.addActionListener(handlerAcao);
    	    	botao1.addActionListener(handlerAcao);
    	    	botao2.addActionListener(handlerAcao);
    	    	botao3.addActionListener(handlerAcao);
    	    	botao4.addActionListener(handlerAcao);
    	    	botao5.addActionListener(handlerAcao);
    	    	botao6.addActionListener(handlerAcao);
    	    	botao7.addActionListener(handlerAcao);
    	    	botao8.addActionListener(handlerAcao);
    	    	botao9.addActionListener(handlerAcao);
    	    	botao0.addActionListener(handlerAcao);
    	    	
    	    	
    	    	trataEventosFocus handlerFocus = new trataEventosFocus();
    	    	
    	    	trataEventosRadio handlerRadio = new trataEventosRadio();
    	    	botao2dig.addItemListener(handlerRadio);
    	    	botao4dig.addItemListener(handlerRadio);
    	    	botao6dig.addItemListener(handlerRadio);
    	    	
    	    	
    	    	visor.addKeyListener(this);
    	    	
    	    	setSize(285,480);
    	    	Dimension resVideo = Toolkit.getDefaultToolkit().getScreenSize();
    	    	Dimension tamForm = getSize();
    	    	setLocation((resVideo.width - tamForm.width)/2,(resVideo.height - tamForm.height)/2);
    	    	setResizable(false);
    	    	setVisible(true);
    	    }
    	    
    	    public static void main (String[] args){
    	    	Calculadora application = new Calculadora();
    	    	application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    		   }
    				 
      }
}

 

calculadora.txt

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...