Formatar Texto JTable

2 respostas
jorgereidinaldo

Consegui este codigo na net para formatar um CPF porem não sei como implementar em minha aplicação, fiz dois testes compilaram porem não apresentou nada nem erro.

public class FormatedCellEditor extends AbstractCellEditor implements TableCellEditor{  
  
    JFormattedTextField format = new JFormattedTextField();  
    public Object getCellEditorValue() {  
        return format.getText();  
    }  
  
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {  
          
        if(value != null)  
            format.setText(value.toString());  
          
        return (Component)format;  
    }  
}

2 Respostas

P

Num JFormattedTextField você precisa informar como será feita a formatação(Informando uma máscara), até porque este componente não formata apenas CPF e sim vários outros tipos de dados como data de nascimento entre outros.

Exemplo:

MaskFormatter cpfMask = MaskFormatter("###.###.###-##");
cpfMask.setPlaceholderCharacter('_');

Os # representam qualquer número.
E o método setPlaceholderCharacter coloca no caso em exemplo um “_” (Under line) nos espaços não preenchidos.
Porém você poderia usar diversos caracteres que resultariam em uma diferente formatação(#,’ ,U, L, A, ? *, H)


Porém se você utilizar o JFormattedTextField perceberá que ele é meio chato as vezes, pois as vezes escrevendo valores pela primeira vez torna impossível apagá-los, entre outras inconveniências.

Então uma alternativa que eu sugeria seria criar uma própria extensão da classe PlainDocument, fazer a validação da inserção dos dados no método insertString. Desse modo você teria maior quantidades de validações por área de texto (Como por exemplo limitar um número de idade até 90 anos), e flexibilidade.
Ao criar seu PlainDocument você precisaria usar o método setDocument da classe JTextField

L

È mais complicado que voce imagina. Mas depende da força de vontade de cada um.

Eu aconselho voce a fazer essa formatação antes do cpf chegar na tabela, assim voce mostra o cpf pronto como string na celula.

Mas se voce quizer brigar com o DRAGÃO dá uma olhada nessa resposta que dei aqui no forum, é o começo da briga.
http://www.guj.com.br/java/280930-adcionar-icone-em-celula-de-coluna-em-uma-jtable#1490593

Criado 13 de setembro de 2012
Ultima resposta 16 de set. de 2012
Respostas 2
Participantes 3