TextListener Ajuda!

4 respostas
jhonk1

To tentando fazer uma parada aqui com minha calculadora que quando o cara digitar o numero aparecerá a mensagem ?valor alterado?, to tentando usar o TextEvent, textValueChanged, mas quando uso o T1.addTextListener(this) e mando compilar, o Bluej fala que o ?símbolo? não foi achado
Eu estou querendo saber por que esta dando esse erro!

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Calculadora extends JFrame implements ActionListener, TextListener
{
    JLabel L1;
    static JButton B1,B2,B3,B4,B5,B6,B7,B8,B9,B10;
    static JTextField T1,T2,T3;
    float N1=0,N2=0,n=0,m=0;
    public static void main()
    {
        JFrame Janela = new Calculadora();
        Janela.show();
        //para fechar a janela
        
        WindowListener x = new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
             System.exit(0);
            }
        };
        Janela.addWindowListener(x);
        //Ativar os botões
        verificar();
        
    }
    
    Calculadora()
    {
        setTitle("Calculadora");
        setSize(300,400);
        setLocation(200,100);
        getContentPane().setBackground(Color.gray);
        getContentPane().setLayout(new GridLayout(7,2));
        T1 = new JTextField();
        [color=red]T1.addTextListener(this);[/color]
        T1.setText("");
        
        T2 = new JTextField();
        T3 = new JTextField();
        T3.setEditable(false);//Define o textField como leitura somente
        L1 = new JLabel("Calc.Cabista");
        L1.setForeground(Color.red);
        L1.setFont(new Font("",Font.BOLD,18));
        L1.setBackground(Color.black);
        B1 = new JButton("+"); 
        B1.addActionListener(this);
        B1.setEnabled(false);
        B2 = new JButton("-");
        B2.addActionListener(this);
        B2.setEnabled(false);
        B3 = new JButton("*");
        B3.addActionListener(this);
        B3.setEnabled(false);
        B4 = new JButton("/");
        B4.addActionListener(this);
        B4.setEnabled(false);
        B5 = new JButton("Raiz Cub.");
        B5.addActionListener(this);
        B6 = new JButton("Raiz Quad.");
        B6.addActionListener(this);
        B7 = new JButton("Seno");
        B7.addActionListener(this);
        B8 = new JButton("Cosseno");
        B8.addActionListener(this);
        B9 = new JButton("Tangente");
        B9.addActionListener(this);
        B10 = new JButton("BackSpace");
        B10.addActionListener(this);
        //------
        getContentPane().add(T1);
        getContentPane().add(T2);
        getContentPane().add(B1);
        getContentPane().add(B2);
        getContentPane().add(B3);
        getContentPane().add(B4);
        getContentPane().add(B5);
        getContentPane().add(B6);
        getContentPane().add(B7);
        getContentPane().add(B8);
        getContentPane().add(B9);
        getContentPane().add(B10);
        getContentPane().add(T3);
        getContentPane().add(L1);
         
    }
    
    public static void verificar(){
    int i=0;
        do{
             if((!(T1.getText().equals(""))) && (!(T2.getText().equals(""))))
             {
                 B1.setEnabled(true);
                 B2.setEnabled(true);
                 B3.setEnabled(true);
                 B4.setEnabled(true);
                 System.out.println("entrou");        
                 i=1;
             }
             else if(T1.getText().equals("") || T2.getText().equals("")){
                 System.out.println("for");
                 B1.setEnabled(false);
                 B2.setEnabled(false);
                 B3.setEnabled(false);
                 B4.setEnabled(false);
                 i=0;
            }
                
        }while(i==0);// fazer a parada do e.getSource();
    }

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==B10){
        T1.setText("");
        T2.setText("");
        T3.setText("");
        B1.setEnabled(false);
        B2.setEnabled(false);
        B3.setEnabled(false);
        B4.setEnabled(false);
        
        return;
        }
        
        
         double resultado=0,rad=0; 
        
        try{
            if(e.getSource()!=B5 && e.getSource()!=B6 && e.getSource()!=B7 && e.getSource()!=B8 && e.getSource()!=B9 ){ // quando for fazer os outros não se esquece dessa parada, tem que declarar o botão como
                                                     //diferente do que você esta fazendo para não entrar para fazer com dois valores
                N1 = Float.parseFloat(T1.getText());
                N2 = Float.parseFloat(T2.getText());
            }
            else{//---------------------------- Raiz Cubica --------------------------
                if(e.getSource()==B5){ // se b5 for apertado entra para raiz cubica
                        if(T1.getText().trim().isEmpty()){// Verifica se N1 esta vazio, se estiver faz
                         T3.setText("Ta errado, galo");
                         T2.setText("");
                         return;
                        }
                        else{ if(T2.getText().trim().isEmpty()){// Verifica se o campo esta vazio, se estiver faz N1
                                N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                                resultado = Math.cbrt(N1);//faz o calculo
                            }
                            else{//Se os dois campos estiverem com valor e forem iguais faz a raiz quadrada
                                N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                                N2 = Float.parseFloat(T2.getText());//recebe o valor do campo 2, Campo da direita T2
                                    if(N1 == N2){//verifica se são iguais
                                        N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                                        resultado = Math.cbrt(N1);//faz o calculo
                                        T2.setText("");
                                        
                                    }
                                    else {
                                        N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                                        resultado = Math.cbrt(N1);
                                        T2.setText("");
                                    }
                            
                                }
                            }
                }
                //----------------------------- Raiz Quadrada --------------------------
                if(e.getSource()==B6){ // se b6 for apertado entra para raiz quadrada
                        if(T1.getText().trim().isEmpty()){// Verifica se N1 esta vazio, se estiver faz
                        T3.setText("Ta errado, galo");
                         T2.setText("");
                         return;
                        }
                        else if(T2.getText().trim().isEmpty()){// Verifica se o campo esta vazio, se estiver faz N1
                        N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                        resultado = Math.sqrt(N1);//faz o calculo
                            }
                        else{//Se os dois campos estiverem com valor e forem iguais faz a raiz quadrada
                            N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                            N2 = Float.parseFloat(T2.getText());//recebe o valor do campo 2, Campo da direita T2
                            if(N1 == N2){//verifica se são iguais
                            N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                            resultado = Math.sqrt(N1);//faz o calculo
                            T2.setText("");
                            }
                            else {
                                N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                                resultado = Math.sqrt(N1);
                                T2.setText("");
                            }
                           
                        }
                }
                if(e.getSource()==B7){ // se b7 for apertado entra para raiz cubica
                        if(T1.getText().trim().isEmpty()){// Verifica se N1 esta vazio, se estiver faz
                         T3.setText("Ta errado, galo");
                         T2.setText("");
                         return;
                        }
                        else if(T2.getText().trim().isEmpty()){// Verifica se o campo esta vazio, se estiver faz N1
                        N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                     
                        rad=Math.toRadians(N1);//acha rad//faz o calculo
                        resultado = Math.sin(rad);//faz o calculo
                            }
                        else{//Se os dois campos estiverem com valor e forem iguais faz a raiz quadrada
                            N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                            N2 = Float.parseFloat(T2.getText());//recebe o valor do campo 2, Campo da direita T2
                            if(N1 == N2){//verifica se são iguais
                            N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                              rad=Math.toRadians(N1);//acha rad//faz o calculo
                              resultado = Math.sin(rad);//faz o calculo
                              T2.setText("");
                            }
                            else {
                                N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                                rad=Math.toRadians(N1);//acha rad//faz o calculo
                                resultado = Math.sin(rad);//faz o calculo
                                T2.setText("");
                            }
                            
                        }
                }
                if(e.getSource()==B8){ // se b7 for apertado entra para raiz cubica
                        if(T1.getText().trim().isEmpty()){// Verifica se N1 esta vazio, se estiver faz
                        T3.setText("Ta errado, galo");
                         T2.setText("");
                         return;
                        }
                        else if(T2.getText().trim().isEmpty()){// Verifica se o campo esta vazio, se estiver faz N1
                        N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                     
                        rad=Math.toRadians(N1);//acha rad//faz o calculo
                        resultado = Math.cos(rad);//faz o calculo
                            }
                        else{//Se os dois campos estiverem com valor e forem iguais faz a raiz quadrada
                            N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                            N2 = Float.parseFloat(T2.getText());//recebe o valor do campo 2, Campo da direita T2
                            if(N1 == N2){//verifica se são iguais
                            N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                              rad=Math.toRadians(N1);//acha rad//faz o calculo
                              resultado = Math.cos(rad);//faz o calculo
                              T2.setText("");
                            }
                            else {
                                N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                                 rad=Math.toRadians(N1);//acha rad//faz o calculo
                                 resultado = Math.cos(rad);//faz o calculo
                                T2.setText("");
                            }
                            
                        }
                }
                if(e.getSource()==B9){ // se b7 for apertado entra para raiz cubica
                        if(T1.getText().trim().isEmpty()){// Verifica se N1 esta vazio, se estiver faz
                        T3.setText("Ta errado, galo");
                         T2.setText("");
                         return;
                        }
                        else if(T2.getText().trim().isEmpty()){// Verifica se o campo esta vazio, se estiver faz N1
                        N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                     
                        rad=Math.toRadians(N1);//acha rad//faz o calculo
                        resultado = Math.tan(rad);//faz o calculo
                            }
                        else{//Se os dois campos estiverem com valor e forem iguais faz a raiz quadrada
                            N1 = Float.parseFloat(T1.getText());//recebe o valor do campo 1, Campo da Esquerda T1
                            N2 = Float.parseFloat(T2.getText());//recebe o valor do campo 2, Campo da direita T2
                            if(N1 == N2){//verifica se são iguais
                            N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                              rad=Math.toRadians(N1);//acha rad//faz o calculo
                              resultado = Math.tan(rad);//faz o calculo
                              T2.setText("");
                            }
                            else {
                                 N1 = Float.parseFloat(T1.getText());//tanto faz o campo que eu iria pegar
                                 rad=Math.toRadians(N1);//acha rad//faz o calculo
                              resultado = Math.tan(rad);//faz o calculo
                                T2.setText("");
                            }
                            
                        }
                }
            }
       }
       catch (NumberFormatException erro)
           {
           T3.setText("Ta errado, galo");
           return;
           }
        
        if(e.getSource()==B1)
            {resultado = N1 + N2;}
        if(e.getSource()==B2)
            {resultado = N1 - N2;}
        if(e.getSource()==B3)
            {resultado = N1 * N2;}
        if(e.getSource()==B4)
            {resultado = N1 / N2;}
        T3.setText(""+resultado);
    }
    
    public void textValueChanged(TextEvent e)
    {
        T3.setText("T1 alterado");
    }
}

Obs: tenho que usar desse jeito, porque to precisando dele para outra coisa também.
Desde já muito obrigado!

4 Respostas

ViniGodoy
jhonk1

Vlww ai!
Mas pelo que vi isso funcionaria se estivesse usando botões que representassem os números, tipo botão numero 1, os únicos botões que estou utilizando são para somar, diminuir… na minha calculadora o usuário tem que escrever o numero no campo. O único problema é que quando eu coloco o T1.addTextListener(this); o bluej não roda, dá essa mensagem “cannot find symbol - method addTextListener”, porem se eu colocar addActionListener() ele aceita.

jhonk1

Consegui aqui, vlwww!
Era porque eu estava usando o JTextField, mudei para TextField e pegou!

ViniGodoy

TextField é uma classe da AWT, não do Swing. Não misture as duas coisas.

Se você quer detectar quando uma tecla é pressionada num JTextField, use o comando addKeyListener.

Criado 27 de outubro de 2012
Ultima resposta 27 de out. de 2012
Respostas 4
Participantes 2