E a e pessoal!
Eu consegui fazer com que o preenchimento do campo seja feito da direita para esquerda.
Eu usei a classe ComponentOrientation
Porém ainda ficou um problema.
O código é esse:
new javax.swing.JFormattedTextField();
MaskFormatter m_unitario1 = null;
try
{
m_unitario1 = new MaskFormatter("######,##");
}
catch (Exception e)
{
e.printStackTrace();
}
unitario1 = new javax.swing.JFormattedTextField(m_unitario1);
unitario1.setComponentOrientation(java.awt.ComponentOrientation.RIGHT_TO_LEFT);
O problema é o seguinte ele preenche da esquerda para a direita porém ele preenche assim:
1,
12,
123,
1234,
1234,5
1234,56
Ou seja o campo da vírgula é o último o preenchimento tem que ser assim:
,1
,12
1,23
12,34
123,45
1234,56
Igual o preenchimento de um caixa de banco. Cara esta muito trampo fazer isso já estudei vários tutoriais. Agora ficou esse problema alguém sabe corrigir?
A rigor um caixa de banco deveria preencher:
0,00
0,01
0,12
1,23
12,34
123,45
1234,56
e isso não se faz com MaskFormatter, mas fazendo “na unha”. Será que alguém tem isso pronto?
consegui fazer. Um amigo me passou um tutorial e meu deu uns toques e funcionou.
ficou assim:
public class MeuDocument extends PlainDocument{
public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
String texto = getText(0,getLength());
if(texto.length()<7){
remove(0,getLength());
StringBuffer strBuf = new StringBuffer(texto.replaceAll(",","")+str);
if(strBuf.length()<3)
strBuf.insert(0,",");
else
strBuf.insert(strBuf.length()-2,",");
super.insertString(0, strBuf.toString(), a);
}
}
}
moeda.setDocument(new MeuDocument());
Por padrão os JTextField tem uma formação chamado Document ou algo assim aí vc cria a classe com formatação que vc necessita e substitui igual o modelo que deixei acima.
Esse modelo faz justamante igual a um caixa de banco.
Se alguém conseguir deixar o código melhor será muito bem vindo.
Valeu