Olá pessoal, sou novo no desevolvimento java se, e sobre esse assunto, casas decimais para um campo JTextfield, gostaria de entender como aplicar.
Peguei o código aqui e joguei numa classe nova. A funcionalidade é perfeita, exatamente o que preciso.
Mas não consegui aplicar no meu programa, para esse recurso aparecer dentro de um JTextfield.
Isso porque não quero usar o JFormattedTextField, porque está dando muito problema, como depois de digitar o valor, não consigo apagar o conteúdo digitado.
Por isso, preciso usar o JTextField.
Você pode implementar a classe MeuDocument estendendo PlainDocument e sobrescrever o método insertString para controlar a entrada de texto. Inicialize o campo com “0,00” e remova os zeros à direita conforme o usuário digitar:
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;
public class MeuDocument extends PlainDocument {
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
// Verifica se o texto contém apenas números e até duas casas decimais
if (str != null && str.matches("\\d*\\.?\\d{0,2}")) {
// Remove os zeros à direita
str = removeZerosDireita(str);
// Insere o texto
super.insertString(offs, str, a);
}
}
private String removeZerosDireita(String str) {
// Remove os zeros à direita
while (str.endsWith("0")) {
str = str.substring(0, str.length() - 1);
}
// Remove o ponto decimal se for o último caractere
if (str.endsWith(".")) {
str = str.substring(0, str.length() - 1);
}
return str;
}
}