Galera, peguei esse exemplo no forum, mas não roda como eu gostaria.
Quando eu digito o número 1 me retorna 1,00, mas o que eu quero e 0,01. Se eu digitar o próximo número o 2 (dois) por exemplo fica 12,00 mas eu quero 0,12, se eu digitar 121415 quero que o valor formatado seja 1.214,15. alguem pode me dar uma solução.
public JFormattedTextField getFormattedValor()
{
if (formattedTxtValor == null)
{
NumberFormat decimalFormat = new DecimalFormat("#,###.00");
NumberFormatter numero = new NumberFormatter(decimalFormat);
numero.setAllowsInvalid(false); // permite que números sejam digitados
formattedTxtValor = new JFormattedTextField(numero);
formattedTxtValor.setSize(85,18);
formattedTxtValor.setLocation(coluna04,linha02-15);
formattedTxtValor.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
}
return formattedTxtValor;
}
Não vai ser muito fácil fazer isso, a melhor coisa seria mandar o usuário digitar= 0.01 ou 0.12 e assim por diante, mas se tu deseja realmente continuar com isso vai ai um começo (não está funcionando é apenas um começo):
package exemplos;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.text.NumberFormatter;
public class Teste {
public Teste(){
try {
MyFormatter nft = new MyFormatter(new DecimalFormat("#,##0.00"));
nft.setAllowsInvalid(false);
JFormattedTextField field = new JFormattedTextField(nft);
field.setPreferredSize(new Dimension(400, 30));
JFrame j = new JFrame();
j.setLayout(new FlowLayout());
j.add(field);
j.setVisible(true);
j.pack();
} catch (Exception e) {
e.printStackTrace();
}
}
class MyFormatter extends NumberFormatter{
public MyFormatter(NumberFormat format){
super(format);
}
@Override
public String valueToString(Object value) throws ParseException {
try{
double valor = Double.parseDouble(value.toString());
return super.valueToString(valor/100.0);
}
catch (Exception e) {
return super.valueToString(value);
}
}
}
public static void main(String[] args) {
new Teste();
}
}