Iniciando o preenchimento de um JTextField da Direita para a Esquerda

5 respostas
R

Olá Galera,

como faço para iniciar o preenchimento de um JTextField da Direita para a Esquerda e Completar os espaços vazios com zeros, sabendo que o JTextField em questão é um JFormattedTextField utilizando a máscara b[/b] para o cadastro do RG do cliente.

Obrigado a todos.

5 Respostas

R

Olá wellington, Inicialmente a máscara está visível, mas se for o caso, posso alterar isso para ela aparecer penas quando o campo perder o foco. Mesmo assim ainda não tenho ideia de como fazer com que o campo seja preenchido a partir do lado direito e completar os espaços vazios (à esquerda) com zeros (suficientes) para completar o tamanho máximo que a máscara permite. Só utilizei a classe document uma vez para limitar a qde de caracteres de jTextArea. Vc não teria nehum exemplo “bobo” de como implementar isso que eu estou querendo agora? Agradeço!

W

É um trampinho fazer isso. Mas é possível usando a classe Document. Mas deve ser pensado o seguinte: A máscara ficará visível? A máscara irá aparecendo durante a digitação? Ou a máscara aparecerá apenas quando perder o foco, controlando apenas a quantidade máxima de caracteres (esta é a mais simples de fazer)?

Obs.: Você talvez se sinta escrevendo um editor de texto :wink:

W

Tente isto

JFormattedTextField field = new JFormattedTextField(); field.setHorizontalAlignment(JTextField.RIGHT);

W

Aliás, só mudando um pouco, ao invés de ir pelo Document, use o DefaultFormatterFactory

Você pode adicionar um Formatter para ele no modo de edição e outro no modo de visualização:

DefaultFormatterFactory defaultFormatterFactory = field.getFormatterFactory();
            defaultFormatterFactory.setDisplayFormatter(displayFormatter);
            defaultFormatterFactory.setEditFormatter(editFormatter);

O displayFormatter e editFormatter podem ser feitos através de implementações de DefaultFormatter.
O DefaultFormatter oferece o método protegido getDocumentFilter que você pode sobrescrever. Ele retorna um DocumentFilter que você pode extender e criar sua própria implementação (de modo similar a um Document).

protected DocumentFilter getDocumentFilter() {
        //seu codigo aqui.
        return implementedFilter;
    }

Eu acho esta implementação mais elegante e funcional além de adicionar mais funcionalidades a seu componente. Entretanto, é um pouco mais trabalhosa de fazer.

W

E por favor, evite fazer formatação utilizando perda e ganho de foco. Além de não ser funcional, dependendo do comportamento desejado, pode não funcionar corretamente ou ser visualmente estranho.

Criado 29 de janeiro de 2013
Ultima resposta 30 de jan. de 2013
Respostas 5
Participantes 2