Olá, tenho essa classe para valores monetários que tirei do forum e funciona perfeitamente
quando vou digitar num jTextfiel, Veja a classe abaixo! e veja como chamo ela isso para no caso digitar!
mas como eu chamo essa mesma classe para os dados que devem ser atualizados do Banco de Dados,
para que coloque da mesma forma de como eu digito.
package utilitarios;
import javax.swing.text.*;
public class ValoresMonetarios extends PlainDocument
{
public static final int NUMERO_DIGITOS_MAXIMO = 12;
@Override
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException
{
String texto = getText(0, getLength());
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!Character.isDigit(c)) {
return;
}
}
if(texto.length() < this.NUMERO_DIGITOS_MAXIMO){
super.remove(0, getLength());
texto = texto.replace(".", "").replace(",", "");
StringBuffer s = new StringBuffer(texto + str);
if (s.length() > 0 && s.charAt(0) == '0') {
s.deleteCharAt(0);
}
if(s.length() < 3) {
if (s.length() < 1) {
s.insert(0,"000");
}else if (s.length() < 2) {
s.insert(0,"00");
}else{
s.insert(0,"0");
}
}
s.insert(s.length()-2, ",");
if(s.length() > 6) {
s.insert(s.length()-6, ".");
}
if(s.length() > 10) {
s.insert(s.length()-10, ".");
}
super.insertString(0, s.toString(), a);
}
}
public void remove(int offset, int length) throws BadLocationException {
super.remove(offset, length);
String texto = getText(0, getLength());
texto = texto.replace(",", "0");
texto = texto.replace(".", "0");
super.remove(0, getLength());
insertString(0, texto, null);
}
}
Aqui Chamo ela beleza funciona perfeitamente.
tfValorUnitario.setDocument(new ValoresMonetarios());
tfValorTotal.setDocument(new ValoresMonetarios());