Olá , amigos,
Eu estou tentando resolver este problema há muito tempo, mas não consigo. Como faço para formatar uma variável double, colocando a saída dela em um JLabel,mas com apenas duas casas decimais. Sei que tenho que usar a classe NumberFormat, usar setMinimumFractionDigits(2), faço tudo isso, mas não formata com duas casas decimais. Fiz um código, só pra entender esta questão.
Coloco um número em uma variável String, esse número vai para uma JTextField, quando eu clico em um JButton, o código converte a String da caixa de texto para variável double, e aí esse valor é enviado para uma Jlabel, mas formatando essa saída com duas casas decimais. Aparentemente tudo certo, mas não formata.
Na JTextField, eu coloco o valor 4.62768, isso entra na JTextField como String penso eu, mas quando clico no botão, meu código converte para double e uso o critério da NumberFormat para converter para setMinimumFractionDigits(2). Mas não faz, faz tudo, menos formatar para duas casas decimais, o número vira 4,628 (e, estranho, ainda acrescenta uma vírgula no lugar do ponto. Vejam parte do meu código :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.NumberFormat;
public class Formatando extends JFrame implements ActionListener
{
JTextField T1;
JLabel L1;
JButton B1, B2;
NumberFormat df1;
public Formatando()
{
setTitle("Formatando");
setResizable(false);
setSize(460,160);
setLocation(60,60);
getContentPane().setBackground(Color.lightGray);
getContentPane().setLayout(new FlowLayout());
df1 = NumberFormat.getNumberInstance();
df1.setMinimumFractionDigits(2);
T1 = new JTextField("4.62768");
L1 = new JLabel();
B1 = new JButton("Transfere");
B2 = new JButton("Sair");
getContentPane().add(T1);
getContentPane().add(L1);
getContentPane().add(B1);
getContentPane().add(B2);
B1.addActionListener(this);
B2.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == B1 )
{
String A = T1.getText();
double B = Double.parseDouble(A);
L1.setText("Valor = " + df1.format(B));
}
if (e.getSource() == B2 )
{
System.exit(0);
}
}
}
Se alguém souber onde estou errando, e puder me ajudar, agradeço muito, eu se que isso é primário, mas meu nível é primário também, já não tenho o que pensar para resolver isto, só com amigos!
Abraço,
Marco
[/code]