Estou tentando fazer uma calculadora que tenha a função de transformar o número digitado em padrão monetário, porcentagem, etc. Estou tentando usar o NumberFormat, mas não estou tendo sucesso. Nesse código eu estou tentando fazer primeiramente funcionar o botão que transforma o numero em padrão monetário, que é o botão “BReal”, onde “freal” representa o getCurrencyInstance.
Essa parte está contida no final do código, no último if. Só estou tentando esse botão mesmo, depois eu continuo o restante. Alguém tem idéia? Segue o código:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.NumberFormat;
class Ex11 extends JFrame implements ActionListener{
int decimal;
JLabel LNum1,LNum2,LResultado,LBranco1;
JButton BSoma, BSubtrai, BMultiplica, BDivide, BQuad, BPot, BRaiz, BLimpa, BAumenta, BDiminui, BMoeda, BPorcento, BReal;
JTextField TNum1,TNum2,TResultado;
NumberFormat freal,fporcento, fmoeda, faumenta, fdiminui;
public static void main(String args[]){
JFrame GUI = new Ex11();
GUI.setVisible(true);
GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Ex11(){
setTitle("Terceiro Exercicio");
setSize(400,250);
setLocation(200,200);
getContentPane().setBackground(new Color(220,220,220));
setLayout(new GridLayout(5,4));
freal = NumberFormat.getCurrencyInstance();
fmoeda = NumberFormat.getNumberInstance();
fporcento= NumberFormat.getPercentInstance();
// faumenta=
// fdiminui=
LNum1 = new JLabel("1°Num.");
LNum1.setForeground(Color.blue);
LNum1.setFont(new Font("",Font.BOLD,16));
LNum2 = new JLabel("2°Num.");
LNum2.setForeground(Color.blue);
LNum2.setFont(new Font("",Font.BOLD,16));
LResultado = new JLabel("Resultado");
LResultado.setFont(new Font("",Font.BOLD,16));
LResultado.setForeground(Color.red);
LBranco1 = new JLabel("");
BSoma = new JButton ("+");
BSoma.addActionListener(this);
BSubtrai = new JButton ("-");
BSubtrai.addActionListener(this);
BMultiplica = new JButton ("x");
BMultiplica.addActionListener(this);
BDivide = new JButton ("/");
BDivide.addActionListener(this);
BQuad = new JButton ("Quadrado");
BQuad.addActionListener(this);
BPot = new JButton ("Potência");
BPot.addActionListener(this);
BRaiz = new JButton ("Raiz");
BRaiz.addActionListener(this);
BLimpa = new JButton ("Limpar");
BLimpa.addActionListener(this);
BLimpa.setBackground(Color.red);
BLimpa.setForeground(Color.white);
BAumenta = new JButton(">>");
BAumenta.addActionListener(this);
BDiminui = new JButton("<<");
BDiminui.addActionListener(this);
BMoeda = new JButton("0.00");
BMoeda.addActionListener(this);
BReal = new JButton("R$");
BReal.addActionListener(this);
BPorcento = new JButton("0.00%");
BPorcento.addActionListener(this);
TNum1 = new JTextField();
TNum2 = new JTextField();
TResultado = new JTextField();
TResultado.setEditable(false);
add(LNum1);
add(TNum1);
add(BSoma);
add(BSubtrai);
add(LNum2);
add(TNum2);
add(BMultiplica);
add(BDivide);
add(LResultado);
add(TResultado);
add(BQuad);
add(BPot);
add(BRaiz);
add(BMoeda);
add(BReal);
add(BPorcento);
add(LBranco1);
add(BAumenta);
add(BDiminui);
add(BLimpa);
}
public void actionPerformed(ActionEvent evento){
if (evento.getSource()==BLimpa)
{
TNum1.setText("");
TNum2.setText("");
TResultado.setText("");
return;
}
float num1=0,num2=0,resultado=0;
try
{
num1 = Float.parseFloat(TNum1.getText());
if(!TNum2.getText().equals("")){
num2 = Float.parseFloat(TNum2.getText());
}
}
catch (NumberFormatException erro)
{
TResultado.setText("Erro");
return;
}
if (evento.getSource()==BSoma)
resultado = num1 + num2;
if (evento.getSource()==BSubtrai)
resultado = num1 - num2;
if (evento.getSource()==BMultiplica)
resultado = num1 * num2;
if (evento.getSource()==BDivide)
resultado = num1 / num2;
if (evento.getSource()==BQuad)
resultado = num1 * num1;
if (evento.getSource()==BPot)
resultado = (float) Math.pow(num1, num2);
if (evento.getSource()==BRaiz)
resultado = (float) Math.sqrt(num1);
if (evento.getSource()==BAumenta)
// resultado = (float) Math.sqrt(num1);
if (evento.getSource()==BDiminui)
// resultado = (float) Math.sqrt(num1);
if (evento.getSource()==BMoeda)
// resultado = (float) Math.sqrt(num1);
if (evento.getSource()==BPorcento)
resultado = Float.parseFloat( fporcento.format(num1));
if (evento.getSource()==BReal)
resultado = Float.parseFloat( freal.format(num1));
TResultado.setText(String.valueOf(resultado));
}
}
//variavel global indicando casa decimais.
//utilizar variavel numerica que foi colocada