Olá.
Preciso de uma máscara que exiba ‘0,00’, porém o meu JFormattedTextField pode aceitar até 4 casas fracionárias. Não quero que no JFormattedTextField seja exibido ‘0,0000’ antes da digitação do valor, o que acontece com DecimalFormat com máscara “##0.00##”.
Alguma dica?
Você pode definir, no DecimalFormat o número de digitos que vc quer que apareça:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
String valor = df.format(12345.9321);
System.out.println(valor); // vai imprimir 12.345,93
Só preste atenção na forma que o DecimalFormat arredonda o valor!
[quote=von.juliano]Você pode definir, no DecimalFormat o número de digitos que vc quer que apareça:
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(2);
String valor = df.format(12345.9321);
System.out.println(valor); // vai imprimir 12.345,93
Só preste atenção na forma que o DecimalFormat arredonda o valor![/quote]
Obrigado por responder von.juliano, mas o negócio é mais ou menos como uma máscara para endereço ip. Onde não exista numeros fique em branco.Tentei fazer uma mascara mais ou menos assim:
public static void setaFormato(javax.swing.JFormattedTextField TextField,
String Formato, String caracterInvalido, char caracter) throws Exception {
if (Formato==null) return;
javax.swing.text.MaskFormatter formatoPadrao = new javax.swing.text.MaskFormatter(Formato);
formatoPadrao.setValueContainsLiteralCharacters(false);
if(!caracterInvalido.equals(""))
formatoPadrao.setInvalidCharacters(caracterInvalido);
if(!String.valueOf(caracter).equals(""))
formatoPadrao.setPlaceholderCharacter(caracter);
try {
TextField.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
formatoPadrao,
formatoPadrao,
formatoPadrao));
TextField.setValue("");
TextField.setColumns(Formato.length());
TextField.setFocusLostBehavior(javax.swing.JFormattedTextField.COMMIT);
} catch (Exception ex) {
System.out.println("ERRO::setaFormatoDouble: " + ex.getMessage());
}
}
Com:
Formato="###.###.###.###", caracterInvalido="", caracter=’ ’
Desta forma tenho erro de Parsevalue (OBS: preciso forçar um commitEdit.)
Value…