Calculo não aparece no JTextField [RESOLVIDO]

8 respostas
H

Segue o codigo completo e funcionando abraço turma e obrigado pela ajuda!
abraço

import java.awt.*;   
import java.awt.event.*;   
import javax.swing.*;   
//import java.util.*;   
//import java.text.DecimalFormat;  

public class Abn extends JFrame implements ActionListener   
{   
    private JTextField Abandonadas,Oferecidas, Resultado;   
    private JButton Calcular;   
    private JLabel abandonadas,oferecidas, resultado, lb1,topo,topo1;   
    double num1,num2,div, deci;   
  
    
    public Abn (){   
        super("Calculo de Abandono");   
        setSize(300,300);   
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
        getContentPane() .setLayout(null);   
        //DecimalFormat div = new DecimalFormat("0.00");
    
        
        abandonadas = new JLabel("Abandonadas: ");   
        getContentPane() .add(abandonadas);   
        abandonadas .setBounds(5,60,120,20);   
        Abandonadas = new JTextField();   
        getContentPane() .add(Abandonadas);   
        Abandonadas .setBounds(90,60,50,20);   
        Abandonadas .addActionListener(this);   
  
        oferecidas = new JLabel("Oferecidas: ");   
        getContentPane() .add(oferecidas);   
        oferecidas .setBounds(5,90,120,20);   
        Oferecidas = new JTextField();   
        getContentPane() .add(Oferecidas);   
        Oferecidas .setBounds(90,90,50,20);   
        Oferecidas .addActionListener(this);   
  
        resultado = new JLabel("Resultado: ");   
        getContentPane() .add(resultado);   
        resultado .setBounds(5,120,120,20);   
           
        Resultado = new JFormattedTextField("");   
        getContentPane() .add(Resultado);   
        Resultado .setBounds(90,120,50,20);   
        Resultado .addActionListener(this);   
           
        Calcular = new JButton("Calcular");   
        getContentPane() .add(Calcular);   
        Calcular .setBounds(60,160,120,20);   
        Calcular.addActionListener(this);  
       
        lb1 = new JLabel();
        getContentPane().add(lb1);
        lb1 .setBounds(5,180,180,20);    
        
        topo = new JLabel("GCO CAS");
        getContentPane().add(topo);
        topo .setBounds(120,10,300,20); 
        
        topo1 = new JLabel("Diretoria de Planejamento e Controle de Trafego");
        getContentPane().add(topo1);
        topo1 .setBounds(5,25,300,20);
        
    }   
    public static void main(String args [])   
    {   
        Abn obj = new Abn();   
        obj.setVisible(true);   
        obj.setResizable(false);
        obj.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }   
  
    @Override   
    public void actionPerformed(ActionEvent arg0) {   
        //  // TODO Auto-generated method stub   
      	try{
        num1 = Integer.parseInt(Abandonadas.getText());   
        Abandonadas.setText("");   
        num2 = Integer.parseInt(Oferecidas.getText());   
        Oferecidas.setText("");   
  
        div = (num1/num2)*100;   
     
        //Resultado.setText(Double.toString(div)); 
        Resultado.setText(String.format("%6.2f",div));
        
        lb1.setForeground(Color.blue);
        lb1.setText("Entre com um novo valor! "  + Resultado.getText());
        
      	}
      	 catch(NumberFormatException e){
      	
      	lb1.setForeground(Color.red);
        lb1.setText("Entre com um valor!");
      	 }
    }             
  
}

8 Respostas

fbl.lucas

o método actionPerformed nunca é chamado pois você não adicionou o evento ao JButon Calcular
acho que faltou o código abaixo, não lembro como faz exatamente.

Calcular.addActionListener(this);
H

Obrigado pela dica Lucas, eu já havia testado antes e mesmo assim não funcionou! Se mais alguem puder ajudar agradeço, como não manjo muito de java ta dificil.

J

hteles,

Primeiramente, verifique qual a variável do componente que você quer utilizar:

//Antes você estava utilizando "abandonadas.getText()"
num1 = Integer.parseInt(Abandonadas.getText());
Abandonadas.setText("");

//Antes você estava utilizando "oferecidas.getText()"
num2 = Integer.parseInt(Oferecidas.getText());
Oferecidas.setText("");

div = (num1 / num2) * 100;

//Antes você estava utilizando "resultado.setText()"
Resultado.setText(Double.toString(div));

depois adicione a linha para adicionar uma Action no botão:

Calcular = new JButton("Calcular");  
getContentPane() .add(Calcular);  
Calcular .setBounds(60,160,120,20);
Calcular.addActionListener(this);//Adicionar a action no botão

Tente colocar os nomes das variáveis de acordo com o componentes que elas estão associadas, por exemplo, txtfield_abandonadas, label_abandonadas, txtfield_resultado, label_resultado, etc.

Espero ter ajudado.

thomazaudio

Você não especificou uma action para o JButton “Calcular” e relacionou de forma errada alguns objetos como “Abandonadas” e “Oferecidas”

Aqui deu certo!
Espero ter ajudado.

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.<em>;

import java.util.</em>;
public class abd extends JFrame implements ActionListener

{

private JTextField Abandonadas,Oferecidas, Resultado;

private JButton Calcular;

private JLabel abandonadas,oferecidas, resultado;

double num1,num2,div;
public alarme (){  
    super("Calculo de Abandono");  
    setSize(600,450);  
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    getContentPane() .setLayout(null);  

    abandonadas = new JLabel("Abandonadas: ");  
    getContentPane() .add(abandonadas);  
    abandonadas .setBounds(0,60,120,20);  
    Abandonadas = new JTextField();  
    getContentPane() .add(Abandonadas);  
    Abandonadas .setBounds(90,60,50,20);  
    Abandonadas .addActionListener(this);  

    oferecidas = new JLabel("Oferecidas: ");  
    getContentPane() .add(oferecidas);  
    oferecidas .setBounds(0,90,120,20);  
    Oferecidas = new JTextField();  
    getContentPane() .add(Oferecidas);  
    Oferecidas .setBounds(90,90,50,20);  
    Oferecidas .addActionListener(this);  

    resultado = new JLabel("Resultado: ");  
    getContentPane() .add(resultado);  
    resultado .setBounds(0,120,120,20);  
      
    Resultado = new JTextField();  
    getContentPane() .add(Resultado);  
    Resultado .setBounds(90,120,50,20);  
    Resultado .addActionListener(this);  
      
    Calcular = new JButton("Calcular");  
    getContentPane() .add(Calcular);  
    Calcular .setBounds(60,160,120,20);  
     Calcular.addActionListener(this);                 
      
}  
public static void main(String args [])  
{  
    abd obj = new abd();  
    obj.setVisible(true);  

}  

@Override  
public void actionPerformed(ActionEvent arg0) {  
    //  // TODO Auto-generated method stub  

    num1 = Integer.parseInt(Abandonadas.getText());  
    abandonadas.setText("");  
    num2 = Integer.parseInt(Oferecidas.getText());  
    oferecidas.setText("");  

    div = (num1/num2)*100;  

    resultado.setText(Double.toString(div));  


}
H

Turma muito obrigado pela ajuda o codigo ta funcionando, porem quero mais uma ajuda como faço pra definir as casas decimais no resultado do jtextfield?

import java.awt.*;   
import java.awt.event.*;   
import javax.swing.*;   
import java.util.*;   
import java.text.DecimalFormat;  

public class Abn extends JFrame implements ActionListener   
{   
    private JTextField Abandonadas,Oferecidas, Resultado;   
    private JButton Calcular;   
    private JLabel abandonadas,oferecidas, resultado, lb1;   
    double num1,num2,div, deci;   
  
    
    public Abn (){   
        super("Calculo de Abandono");   
        setSize(600,450);   
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
        getContentPane() .setLayout(null);   
        DecimalFormat deci = new DecimalFormat("0.000");
      
        
        abandonadas = new JLabel("Abandonadas: ");   
        getContentPane() .add(abandonadas);   
        abandonadas .setBounds(0,60,120,20);   
        Abandonadas = new JTextField();   
        getContentPane() .add(Abandonadas);   
        Abandonadas .setBounds(90,60,50,20);   
        Abandonadas .addActionListener(this);   
  
        oferecidas = new JLabel("Oferecidas: ");   
        getContentPane() .add(oferecidas);   
        oferecidas .setBounds(0,90,120,20);   
        Oferecidas = new JTextField();   
        getContentPane() .add(Oferecidas);   
        Oferecidas .setBounds(90,90,50,20);   
        Oferecidas .addActionListener(this);   
  
        resultado = new JLabel("Resultado: ");   
        getContentPane() .add(resultado);   
        resultado .setBounds(0,120,120,20);   
           
        Resultado = new JTextField();   
        getContentPane() .add(Resultado);   
        Resultado .setBounds(90,120,50,20);   
        Resultado .addActionListener(this);   
           
        Calcular = new JButton("Calcular");   
        getContentPane() .add(Calcular);   
        Calcular .setBounds(60,160,120,20);   
        Calcular.addActionListener(this);  
       
        lb1 = new JLabel();
        getContentPane().add(lb1);
        lb1 .setBounds(0,180,180,20);      
        
    }   
    public static void main(String args [])   
    {   
        Abn obj = new Abn();   
        obj.setVisible(true);   
  
    }   
  
    @Override   
    public void actionPerformed(ActionEvent arg0) {   
        //  // TODO Auto-generated method stub   
      	try{
        num1 = Integer.parseInt(Abandonadas.getText());   
        Abandonadas.setText("");   
        num2 = Integer.parseInt(Oferecidas.getText());   
        Oferecidas.setText("");   
  
        div = (num1/num2)*100;   
     
        Resultado.setText(Double.toString(div)); 
       
        
        lb1.setForeground(Color.blue);
        lb1.setText("Entre com um novo valor! "  + Resultado.getText());
        
      	}
      	 catch(NumberFormatException e){
      	
      	lb1.setForeground(Color.red);
        lb1.setText("Entre com um valor!");
      	 }
    }             
  
}
fbl.lucas

hteles:
Turma muito obrigado pela ajuda o codigo ta funcionando, porem quero mais uma ajuda como faço pra definir as casas decimais no resultado do jtextfield?

Dá uma olhada aqui http://www.guj.com.br/java/47519-jtextfield—como-atribuir-uma-mascara-

H

Brother mesmo com sua dica não consegui definir as casas decimais no Resultado, se tiver um outro exemplo agradeço.

import java.awt.*;   
import java.awt.event.*;   
import javax.swing.*;   
import java.util.*;   
import java.text.DecimalFormat;  

public class Abn extends JFrame implements ActionListener   
{   
    private JTextField Abandonadas,Oferecidas, Resultado;   
    private JButton Calcular;   
    private JLabel abandonadas,oferecidas, resultado, lb1,topo,topo1;   
    double num1,num2,div, deci;   
  
    
    public Abn (){   
        super("Calculo de Abandono");   
        setSize(300,300);   
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
        getContentPane() .setLayout(null);   
        DecimalFormat div = new DecimalFormat("0.00");
    
        
        abandonadas = new JLabel("Abandonadas: ");   
        getContentPane() .add(abandonadas);   
        abandonadas .setBounds(5,60,120,20);   
        Abandonadas = new JTextField();   
        getContentPane() .add(Abandonadas);   
        Abandonadas .setBounds(90,60,50,20);   
        Abandonadas .addActionListener(this);   
  
        oferecidas = new JLabel("Oferecidas: ");   
        getContentPane() .add(oferecidas);   
        oferecidas .setBounds(5,90,120,20);   
        Oferecidas = new JTextField();   
        getContentPane() .add(Oferecidas);   
        Oferecidas .setBounds(90,90,50,20);   
        Oferecidas .addActionListener(this);   
  
        resultado = new JLabel("Resultado: ");   
        getContentPane() .add(resultado);   
        resultado .setBounds(5,120,120,20);   
           
        Resultado = new JFormattedTextField("");   
        getContentPane() .add(Resultado);   
        Resultado .setBounds(90,120,50,20);   
        Resultado .addActionListener(this);   
           
        Calcular = new JButton("Calcular");   
        getContentPane() .add(Calcular);   
        Calcular .setBounds(60,160,120,20);   
        Calcular.addActionListener(this);  
       
        lb1 = new JLabel();
        getContentPane().add(lb1);
        lb1 .setBounds(5,180,180,20);    
        
        topo = new JLabel("GCO CAS");
        getContentPane().add(topo);
        topo .setBounds(120,10,300,20); 
        
        topo1 = new JLabel("Diretoria de Planejamento e Controle de Trafego");
        getContentPane().add(topo1);
        topo1 .setBounds(5,25,300,20);
        
    }   
    public static void main(String args [])   
    {   
        Abn obj = new Abn();   
        obj.setVisible(true);   
        obj.setResizable(false);
        obj.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }   
  
    @Override   
    public void actionPerformed(ActionEvent arg0) {   
        //  // TODO Auto-generated method stub   
      	try{
        num1 = Integer.parseInt(Abandonadas.getText());   
        Abandonadas.setText("");   
        num2 = Integer.parseInt(Oferecidas.getText());   
        Oferecidas.setText("");   
  
        div = (num1/num2)*100;   
     
        Resultado.setText(Double.toString(div)); 
             
        
        lb1.setForeground(Color.blue);
        lb1.setText("Entre com um novo valor! "  + Resultado.getText());
        
      	}
      	 catch(NumberFormatException e){
      	
      	lb1.setForeground(Color.red);
        lb1.setText("Entre com um valor!");
      	 }
    }             
  
}
fbl.lucas

Cara você não passou a máscara como parametro para o JFormattedTextField, tenta isso:

new JFormattedTextField(new DecimalFormat())

Da uma olhada aqui http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html

Criado 22 de dezembro de 2011
Ultima resposta 26 de dez. de 2011
Respostas 8
Participantes 4