Problemas com o CellEditor na JTable

2 respostas
rafaelbtz

Estou com um problema com JTables… é o seguinte:

MaskFormatter mask = new MaskFormatter(###.###.###-##);
JFormattedTextField  text = new JFormattedTextField();
mask.install(text);

colunaDaJTable.setCellEditor(new DefaultCellEditor(text));

Estou definindo um JFormattedTextField no CellEditor de uma coluna com mascara de CPF, até ai ta tudo beleza
quando o usuario digita na coluna ele usa a mascara como num JFormattedTextField normal.

Mas quando eu executo:

JTable.getModelo().setValueAt("[telefone removido]", 0, 0);

ele não insere na mascara e coloca o valor literal como está no setValueAt, eu posso até passar letras que ele aceita

Alguem sabe de algum jeito de ele usar a mascara quando eu insiro o valor via código,
assim como ele já faz durante a digitação, sem eu ter que ficar formatando na mão já que o
JFormattedTextField já está pronto.

Valeu galera…

2 Respostas

paulohbmetal

O problema é o seguinte, vc formatou o editor e não o renderer. Se vc deixar a célula editável e editá-la, vc verá que ele vai formatar o mesmo.

Experimente fazer um renderer.

A paz!!

paulohbmetal

E se preferir coloque os dois. :smiley:

Toma um renderer de presente…

class MaskRenderer implements TableCellRenderer{
    private JFormattedTextField text = null;
    
    public MaskRenderer(MaskFormatter mask){        
        text = new JFormattedTextField();
        text.setBorder(null);
        mask.install(text);
    }
    
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if(value!=null) text.setText(value.toString());
        else text.setText("");                
        
        return text;
    }    
}

A Paz!!

Criado 22 de julho de 2005
Ultima resposta 22 de jul. de 2005
Respostas 2
Participantes 2