Como passar uma caixa de texto para um valor BigDecimal?

Já tentei essa gambiarra, mas não deu certo!

package CalculandoIMC;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import java.math.BigDecimal;

public class IMC extends JFrame {

private JLabel kg, volume, amc;
private JButton limpar, calcular;
private JTextField quilograma, altura, imc;
private BigDecimal a, b;

public IMC() {
    super("Calculando o IMC");
    setLayout(new FlowLayout());
    
    a = new BigDecimal(quilograma.getText());
    b = new BigDecimal(altura.getText());

    kg = new JLabel("Massa (KG):");
    add(kg);

    quilograma = new JTextField();
    quilograma.setEditable(true);
    add(quilograma);

    volume = new JLabel("Altura:");
    add(volume);
    altura = new JTextField();
    altura.setEditable(true);
    add(altura);

    amc = new JLabel("IMC");
    add(amc);

    calcular = new JButton("Calcular IMC");
    calcular.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            imc.setText("IMC: "+a/b);
        }
    });
    imc = new JTextField();
    imc.setEditable(false);
    add(imc);
}

}

OBS.: O erro é nessa linha: imc.setText("IMC: "+a/b);

BigDecimal não funciona a/b você tem que usar o divide por exemplo para cada coisa o BigDecimal tem sua função:

imc.setText("IMC: "+a.divide(b));

2 curtidas

@Moraisdelimahigor da uma olhada na api…
pode te ajudar bastante…rs

https://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html