Campo Monetário[Resolvido]

1 resposta
J

Olá a todos,

Estava procurando um campo com formato monetário, e encontrei este http://www.guj.com.br/posts/list/64872.java que me serviu muito bem, só preciso que ele tenha 4 casas decimais…

tentei alterar o código sem sucesso, alguém poderia me dar uma ajuda?

1 Resposta

J

consegui, caso alguém precise, só substituir o método abaixo

public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
            String original = getText(0, getLength());

            // Permite apenas digitar até 16 caracteres (9.999.999.999,99)
            if (original.length() < 16) {
                StringBuffer mascarado = new StringBuffer();
                if (a != nullAttribute) {
                    //limpa o campo
                    remove(-1, getLength());

                    mascarado.append((original + str).replaceAll("[^0-9]", ""));
                    for (int i = 0; i < mascarado.length(); i++) {
                        if (!Character.isDigit(mascarado.charAt(i))) {
                            mascarado.deleteCharAt(i);
                        }
                    }
                    Long number = new Long(mascarado.toString());

                    mascarado.replace(0, mascarado.length(), number.toString());

                    if (mascarado.length() < 5) {
                        if (mascarado.length() == 1) {
                            mascarado.insert(0, "0");
                            mascarado.insert(0, "0");
                            mascarado.insert(0, "0");
                            mascarado.insert(0, ",");
                            mascarado.insert(0, "0");
                        } else if (mascarado.length() == 2) {
                            mascarado.insert(0, "0");
                            mascarado.insert(0, "0");
                            mascarado.insert(0, ",");
                            mascarado.insert(0, "0");

                        } else if (mascarado.length() == 3) {
                            mascarado.insert(0, "0");
                            mascarado.insert(0, ",");
                            mascarado.insert(0, "0");

                        } else if (mascarado.length() == 4) {
                            mascarado.insert(0, ",");
                            mascarado.insert(0, "0");
                        }
                    } else {
                        mascarado.insert(mascarado.length() - 4, ",");
                    }

                    if (mascarado.length() > 8) {
                        mascarado.insert(mascarado.length() - 8, '.');
                        if (mascarado.length() > 12) {
                            mascarado.insert(mascarado.length() - 12, '.');
                            if (mascarado.length() > 16) {
                                mascarado.insert(mascarado.length() - 16, '.');
                            }
                        }
                    }
                    super.insertString(0, mascarado.toString(), a);
                } else {
                    if (original.length() == 0) {
                        super.insertString(0, "0,0000", a);
                    }
                }
            }
        }
Criado 14 de maio de 2010
Ultima resposta 14 de mai. de 2010
Respostas 1
Participantes 1