Calculadora

7 respostas
marcio_de_jesus_sant

boa tarde alguem poderia dar uma analisada neste codigo por que ele ta dando erro

[color=red][/color]

 package p1;
 
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.Font;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.KeyListener;
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
 
 import javax.swing.ButtonGroup;
 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JRadioButton;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.ScrollPaneConstants;
 import javax.swing.SwingConstants;
 import javax.swing.border.LineBorder;
 
 
 public class Calculadora extends FormPadrao 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 GridBagLayout layout;
     private GridBagConstraints constraints;
     private JRadioButton botao2dig, botao4dig, botao6dig;
     private ButtonGroup botaoDecimais;
     private int casasDecimais = 2;
     
     // Classe de tratamento e eventos de A??o ==========================
     private class trataEventosAcao implements ActionListener {
         public void actionPerformed ( ActionEvent event){
                 if (event.getSource() == botaoC) teclouC();
                 else if ( event.getSource() == botaoCE) teclouCE();
                 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();
         }    
     }
 
     // Classe de tratamento de eventos Focus (nenhum componente vai recebe o focu alem do visor,
     // mas deixo o codigo abaixo pra efeito didatico
     private class trataEventosFocus implements FocusListener {
         // == qdo os campos texto ganham focus
         public void focusGained(FocusEvent event)
         {//============= 
             }
         // == qdo os campos texto perdem o focus
         public void focusLost(FocusEvent event) 
         { //=============
             } 
       }
 
     // Classe de tratamento de eventos Focus (nenhum componente vai recebe o focu alem do visor,
     // mas deixo o codigo abaixo pra efeito didatico
     private class trataEventosRadio implements ItemListener {
         // == qdo os campos texto ganham focus
         public void itemStateChanged(ItemEvent event){
             if (event.getSource() == botao2dig ){
               //Mudou pra dois digitos decimais
                casasDecimais = 2; 
               }
             if (event.getSource() == botao4dig ){
               //Mudou pra quatro digitos decimais  
                casasDecimais = 4; 
               }
             if (event.getSource() == botao6dig ){
               //Mudou pra seis digitos decimais  
                casasDecimais = 6;
               }
             }
       }
     
     
 // Tratamento de eventos de teclado   
   public void keyPressed(KeyEvent e){
         // VK_ESCAPE ? uma constante est?tica. Tanto faz usar e ou KeyEvent
      if(e.getKeyCode() == e.VK_ESCAPE){ 
             // passando this e nao null, mensagem aparece centro da janela 
             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();
    }
    
    private void dispose() {
	// TODO Auto-generated method stub
	
}

	private void dispose() {
	// TODO Auto-generated method stub
	
}

	private void dispose() {
	// TODO Auto-generated method stub
	
}

	public void keyReleased(KeyEvent e)  {
        //visor.setText("Tecla liberada"); 
    }
    
    public void keyTyped(KeyEvent e) {
        //visor.setText(""+e.getKeyCode());  
    }
 
   // Funcoes logo abaixo sao usadas nos eventos de botoes e teclado
   // Teclou "C" limpa so valor digitado
   public void teclouC (){
       valor = "0";
       visor.setText(formatStrNumerica(valor,casasDecimais));
      }
 
   // Teclou "E" limpa tudo
   public void teclouCE (){
       valor = "0";
       soma = 0;
       visor.setText(formatStrNumerica(valor,casasDecimais));
       roloPapel.append(alinhaStringDir("-------------------------------"+"\n"));
       roloPapel.append(alinhaStringDir(" "+"\n"));
   }
 
   // Percentagem teclou "P" calcula o percentual
   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="";      
   }
 
   // Teclou "," V?rgula decimal   
   public void teclouVirgula (){
        if (valor.lastIndexOf(".")== -1 )  valor = valor + ".";
        visor.setText(valor);
   }
 
   // Teclou Backspace remove ultimo carctere do valor
   public void teclouBackspace(){
        if (valor.length() == 1) valor = "0";          
          else valor = valor.substring(0, valor.length()-1); 
        visor.setText(valor);
   }  
   
   //Pega somente os Numeros digitados
   public void teclouNumeros(String s){
        if (valor.length() <= 14){
          if (valor == "0") valor = "";
        valor = valor+s;
        visor.setText(valor);
         }
   }
   
   // Adi??o teclou "+"
   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="+";
   }
   
 // Subtra??o teclou "-"
   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="-";
   }
 
   // Divis?o teclou "/" ou ":"
   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="/";
   }
 
 // Multiplica??o teclou "*"
 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="*";
 } 
 
 // Totaliza??o ENTER
 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="";
    } 
 
    //Funcao para alinhar os string a direita usado no JTextArea
    public String alinhaStringDir(String s){
        String alinhador = "";
        int i;
        for ( i = 0; i < (36 - s.length()); i++){
        alinhador = alinhador+" ";    
        }
        return alinhador+s;
     }
 
    //Fun??o que formata string numerica (nao estou usando ainda falta incluir componente 
    //para optar qtde de digitos depois da virgula
    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));       
    }
    
    
    // Fun??o que adiciona o componente no panel corretamente
     private void addComponent ( Component component, int row, int column, int width, int height){
             // addComponent(button1, LINHA, COLUNA, QTDECOLUNAS, QTDELINHAS)
             constraints.gridx = column;
             constraints.gridy = row;
             constraints.gridwidth = width;
             constraints.gridheight = height;
             layout.setConstraints(component, constraints);
             container.add (component);
         }
    
     /** Creates a new instance of Main */
     public Calculadora(Container owner,Sistema sistema) {
        super(owner);
        this.setTitle(Funcoes.getDescricao("titulo_calculadora"));
        // Inicializa as variaveis de gerenciamento de layout ========
        container = getContentPane();
        layout = new GridBagLayout();
        container.setLayout(layout);
        constraints = new GridBagConstraints();
 
        // inicializa as variaveis dos objetos (componentes)==========
        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.00");
        visor.setHorizontalAlignment(SwingConstants.RIGHT);
        visor.setFont(new Font("Courier New", Font.BOLD, 16));
        visor.setForeground(Color.RED);
        visor.setToolTipText("Valores at? 14 digitos");
        //Crio a parte de text area q ira receber os valores e crio as barras de
        // rolagem dom o scroll (que ? um container) depois so adiciona o container scroll
        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);
        // Deixo apenas o label visor com foco pra fazer tratamento eventos teclado so nele
        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);
        //======anchor=WEST mantem alinhamento dos componetnes a esquerda das celulas 
        //======weightx=0 indica que nao deve aumentar na horizontal pra ocupar celula
        //======weighty=N indica que dever aumentar na vertical N pixel pra ocupar a celula 
        constraints.anchor = GridBagConstraints.WEST;
        constraints.weightx = 0;
        constraints.weighty = 1;
        // adiciona os componente usando a funcao
        // addComponent(button1, LINHA, COLUNA, QTDECOLUNAS, QTDELINHAS)
        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);
        
        //=====tratamento de eventos de botoes====================
        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);
 
        //=====tratamento de eventos de focus======================
        trataEventosFocus handlerFocus = new trataEventosFocus();
        //botao1.addFocusListener(handlerFocus);
 
        //=====tratamento de evento de radiobuttons===============
        trataEventosRadio handlerRadio = new trataEventosRadio();
        botao2dig.addItemListener(handlerRadio);
        botao4dig.addItemListener(handlerRadio);
        botao6dig.addItemListener(handlerRadio);
        
        //=====tratamemto de eventos de teclado ======================
        //addKeyListener(this); Nao funcionou porque o frame nao fica com foco
        visor.addKeyListener(this);
        
        //===== Determina o tamanho da janela, inibe o redimencionamento, posiciona meio tela
        setSize (285, 480);
        //Dimension resVideo = Toolkit.getDefaultToolkit().getScreenSize();//verifica a resolu??o do v?deo 
        //Dimension tamForm = getSize(); 
        //setLocation((resVideo.width - tamForm.width)/2,(resVideo.height - tamForm.height)/2);//coloca o painel bem no centro da tela 
        setResizable(false);
        setVisible(true);
     }
 
     public static void main(String[] args) {
         
         Calculadora application = new Calculadora(null,null);
         application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
     
 }

segue os erros

[color=blue][/color]
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	The constructor Calculadora(null, null) is undefined
	The method setDefaultCloseOperation(int) is undefined for the type Calculadora

	at Calculadora.main(Calculadora.java:485)
desde ja agradço quem poder dar uma analisada

7 Respostas

paulorb.pacheco

Ae…
Pelo que notei está faltanto o construtor de sua classe…

Antes do método “trataEventosAcao” coloque o construtor da classe.
flw…

timotta

Ao que percebi a classe tem sim o tal construtor, o erro que está ocorrendo deve ser outro de compilação. Sugiro que você a compile utilizando o Javac na mão, pela linha de comando, para que ele exiba os erros de compilação que podem estar ocorrendo.

timotta

Tentei compilar aqui e além dos erros por falta das classes Sistema, Funcoes (???) e outras do seu pacote, tive os seguintes:

Calculadora.java:142: dispose() is already defined in Calculadora

private void dispose() {

^

Calculadora.java:147: dispose() is already defined in Calculadora

private void dispose() {

^

Calculadora.java:116: cannot resolve symbol

symbol  : method showConfirmDialog (Calculadora,java.lang.String,java.l

g,int)

location: class javax.swing.JOptionPane

int selectedOption = JOptionPane.showConfirmDialog(this,"

ir Realmente?", Aten??o, JOptionPane.YES_NO_OPTION);

^

Se você colocar aqui um zip com todo o projeto fica mais fácil

marcio_de_jesus_sant

o Timottavcêtem email para que eu possa te envia o codigo da calculadora

maquiavelbona
private void dispose() {
 	// TODO Auto-generated method stub
 }
 
private void dispose() {
 	// TODO Auto-generated method stub
 }
 
private void dispose() {
 	// TODO Auto-generated method stub
 }

Por que três métodos iguais? Isso dá erro logo na compilação como mostrado.

Até!

maquiavelbona
int selectedOption = JOptionPane.showConfirmDialog(this,"Deseja Sair Realmente?", "Atencao", JOptionPane.YES_NO_OPTION);

Tente enviar null ao invés de this. Ex.:

int selectedOption = JOptionPane.showConfirmDialog(null,"Deseja Sair Realmente?", "Atencao", JOptionPane.YES_NO_OPTION);

Até!

felixcomputer
marcio de jesus santos:
boa tarde alguem poderia dar uma analisada neste codigo por que ele ta dando erro
[color=red][/color]

 package p1;
 
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.Font;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
 import java.awt.Window;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.FocusEvent;
 import java.awt.event.FocusListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.KeyEvent;
 import java.awt.event.KeyListener;
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
 
 import javax.swing.ButtonGroup;
 import javax.swing.JButton;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JRadioButton;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.ScrollPaneConstants;
 import javax.swing.SwingConstants;
 import javax.swing.border.LineBorder;
 
 
 public class Calculadora extends FormPadrao 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 GridBagLayout layout;
     private GridBagConstraints constraints;
     private JRadioButton botao2dig, botao4dig, botao6dig;
     private ButtonGroup botaoDecimais;
     private int casasDecimais = 2;
     
     // Classe de tratamento e eventos de A??o ==========================
     private class trataEventosAcao implements ActionListener {
         public void actionPerformed ( ActionEvent event){
                 if (event.getSource() == botaoC) teclouC();
                 else if ( event.getSource() == botaoCE) teclouCE();
                 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();
         }    
     }
 
     // Classe de tratamento de eventos Focus (nenhum componente vai recebe o focu alem do visor,
     // mas deixo o codigo abaixo pra efeito didatico
     private class trataEventosFocus implements FocusListener {
         // == qdo os campos texto ganham focus
         public void focusGained(FocusEvent event)
         {//============= 
             }
         // == qdo os campos texto perdem o focus
         public void focusLost(FocusEvent event) 
         { //=============
             } 
       }
 
     // Classe de tratamento de eventos Focus (nenhum componente vai recebe o focu alem do visor,
     // mas deixo o codigo abaixo pra efeito didatico
     private class trataEventosRadio implements ItemListener {
         // == qdo os campos texto ganham focus
         public void itemStateChanged(ItemEvent event){
             if (event.getSource() == botao2dig ){
               //Mudou pra dois digitos decimais
                casasDecimais = 2; 
               }
             if (event.getSource() == botao4dig ){
               //Mudou pra quatro digitos decimais  
                casasDecimais = 4; 
               }
             if (event.getSource() == botao6dig ){
               //Mudou pra seis digitos decimais  
                casasDecimais = 6;
               }
             }
       }
     
     
 // Tratamento de eventos de teclado   
   public void keyPressed(KeyEvent e){
         // VK_ESCAPE ? uma constante est?tica. Tanto faz usar e ou KeyEvent
      if(e.getKeyCode() == e.VK_ESCAPE){ 
             // passando this e nao null, mensagem aparece centro da janela 
             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();
    }
    
    private void dispose() {
	// TODO Auto-generated method stub
	
}

	private void dispose() {
	// TODO Auto-generated method stub
	
}

	private void dispose() {
	// TODO Auto-generated method stub
	
}

	public void keyReleased(KeyEvent e)  {
        //visor.setText("Tecla liberada"); 
    }
    
    public void keyTyped(KeyEvent e) {
        //visor.setText(""+e.getKeyCode());  
    }
 
   // Funcoes logo abaixo sao usadas nos eventos de botoes e teclado
   // Teclou "C" limpa so valor digitado
   public void teclouC (){
       valor = "0";
       visor.setText(formatStrNumerica(valor,casasDecimais));
      }
 
   // Teclou "E" limpa tudo
   public void teclouCE (){
       valor = "0";
       soma = 0;
       visor.setText(formatStrNumerica(valor,casasDecimais));
       roloPapel.append(alinhaStringDir("-------------------------------"+"\n"));
       roloPapel.append(alinhaStringDir(" "+"\n"));
   }
 
   // Percentagem teclou "P" calcula o percentual
   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="";      
   }
 
   // Teclou "," V?rgula decimal   
   public void teclouVirgula (){
        if (valor.lastIndexOf(".")== -1 )  valor = valor + ".";
        visor.setText(valor);
   }
 
   // Teclou Backspace remove ultimo carctere do valor
   public void teclouBackspace(){
        if (valor.length() == 1) valor = "0";          
          else valor = valor.substring(0, valor.length()-1); 
        visor.setText(valor);
   }  
   
   //Pega somente os Numeros digitados
   public void teclouNumeros(String s){
        if (valor.length() <= 14){
          if (valor == "0") valor = "";
        valor = valor+s;
        visor.setText(valor);
         }
   }
   
   // Adi??o teclou "+"
   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="+";
   }
   
 // Subtra??o teclou "-"
   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="-";
   }
 
   // Divis?o teclou "/" ou ":"
   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="/";
   }
 
 // Multiplica??o teclou "*"
 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="*";
 } 
 
 // Totaliza??o ENTER
 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="";
    } 
 
    //Funcao para alinhar os string a direita usado no JTextArea
    public String alinhaStringDir(String s){
        String alinhador = "";
        int i;
        for ( i = 0; i < (36 - s.length()); i++){
        alinhador = alinhador+" ";    
        }
        return alinhador+s;
     }
 
    //Fun??o que formata string numerica (nao estou usando ainda falta incluir componente 
    //para optar qtde de digitos depois da virgula
    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));       
    }
    
    
    // Fun??o que adiciona o componente no panel corretamente
     private void addComponent ( Component component, int row, int column, int width, int height){
             // addComponent(button1, LINHA, COLUNA, QTDECOLUNAS, QTDELINHAS)
             constraints.gridx = column;
             constraints.gridy = row;
             constraints.gridwidth = width;
             constraints.gridheight = height;
             layout.setConstraints(component, constraints);
             container.add (component);
         }
    
     /** Creates a new instance of Main */
     public Calculadora(Container owner,Sistema sistema) {
        super(owner);
        this.setTitle(Funcoes.getDescricao("titulo_calculadora"));
        // Inicializa as variaveis de gerenciamento de layout ========
        container = getContentPane();
        layout = new GridBagLayout();
        container.setLayout(layout);
        constraints = new GridBagConstraints();
 
        // inicializa as variaveis dos objetos (componentes)==========
        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.00");
        visor.setHorizontalAlignment(SwingConstants.RIGHT);
        visor.setFont(new Font("Courier New", Font.BOLD, 16));
        visor.setForeground(Color.RED);
        visor.setToolTipText("Valores at? 14 digitos");
        //Crio a parte de text area q ira receber os valores e crio as barras de
        // rolagem dom o scroll (que ? um container) depois so adiciona o container scroll
        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);
        // Deixo apenas o label visor com foco pra fazer tratamento eventos teclado so nele
        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);
        //======anchor=WEST mantem alinhamento dos componetnes a esquerda das celulas 
        //======weightx=0 indica que nao deve aumentar na horizontal pra ocupar celula
        //======weighty=N indica que dever aumentar na vertical N pixel pra ocupar a celula 
        constraints.anchor = GridBagConstraints.WEST;
        constraints.weightx = 0;
        constraints.weighty = 1;
        // adiciona os componente usando a funcao
        // addComponent(button1, LINHA, COLUNA, QTDECOLUNAS, QTDELINHAS)
        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);
        
        //=====tratamento de eventos de botoes====================
        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);
 
        //=====tratamento de eventos de focus======================
        trataEventosFocus handlerFocus = new trataEventosFocus();
        //botao1.addFocusListener(handlerFocus);
 
        //=====tratamento de evento de radiobuttons===============
        trataEventosRadio handlerRadio = new trataEventosRadio();
        botao2dig.addItemListener(handlerRadio);
        botao4dig.addItemListener(handlerRadio);
        botao6dig.addItemListener(handlerRadio);
        
        //=====tratamemto de eventos de teclado ======================
        //addKeyListener(this); Nao funcionou porque o frame nao fica com foco
        visor.addKeyListener(this);
        
        //===== Determina o tamanho da janela, inibe o redimencionamento, posiciona meio tela
        setSize (285, 480);
        //Dimension resVideo = Toolkit.getDefaultToolkit().getScreenSize();//verifica a resolu??o do v?deo 
        //Dimension tamForm = getSize(); 
        //setLocation((resVideo.width - tamForm.width)/2,(resVideo.height - tamForm.height)/2);//coloca o painel bem no centro da tela 
        setResizable(false);
        setVisible(true);
     }
 
     public static void main(String[] args) {
         
         Calculadora application = new Calculadora(null,null);
         application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     }
     
 }

segue os erros

[color=blue][/color]
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	The constructor Calculadora(null, null) is undefined
	The method setDefaultCloseOperation(int) is undefined for the type Calculadora

	at Calculadora.main(Calculadora.java:485)
desde ja agradço quem poder dar uma analisada
Eu dei uma rápida olhada e percebi que no main vc esta chamando o método setDefaultCloseOperation para o objeto da sua classe, contudo esse método é aplicável para o tipo JFrame, logo sua classe deveria estender de JFrame e no seu caso, vc extends de FormPadrao(A nao ser que FormPadrao seja estendido de JFrame), por isso deu o segundo erro
The method setDefaultCloseOperation(int) is undefined for the type Calculadora
Criado 11 de fevereiro de 2007
Ultima resposta 14 de fev. de 2007
Respostas 7
Participantes 5