Fromatar a coluna do JTable

2 respostas
alexwebsp

Bom dia!
Estou querendo formatar a coluna do JTable, por exemplo:

  • Tenho a numeração do CGC no banco de dados, quero que no JTable ele apareça para o usuário formatado assim: ##.###.###/####-##
    tentei fazer isso:
jTFornecedores.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(new javax.swing.JFormattedTextField(new MaskFormatter("##.###.###/####-##"))));

mas não deu certo, será que alguém me poderia ajudar ? por favor!

private void CarregarTabela()
        {
        try {
            DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();
            DefaultTableCellRenderer esquerda = new DefaultTableCellRenderer();
            centralizado.setHorizontalAlignment(SwingConstants.CENTER);
            esquerda.setHorizontalAlignment(SwingConstants.LEFT);
            ResultSetTableModel modelo = null;
            ResultSet rs = null;
            String query = "";
            int a = 0;
            Consultar frame = new Consultar();
            query = "select forcodigo, forcgc, fornome, forendereco, forcomplemento, forestado, forcidade, forbairro, forcep,forcontato,fortelprincipal,fortelsecundario,forcelular,foremail,forobservacoes from fornecedores ORDER BY forcodigo";
            rs = frame.consultar(query);
            modelo = new ResultSetTableModel(rs);
            int quantidade = fornecedoresmodel.verificarQuantidadeFronecedores();
            while (a < quantidade) {
                Object dados = modelo.getValueAt(a, 0);
                Object dados1 = modelo.getValueAt(a, 1);
                Object dados2 = modelo.getValueAt(a, 2);
                Object dados3 = modelo.getValueAt(a, 3);
                Object dados4 = modelo.getValueAt(a, 4);
                Object dados5 = modelo.getValueAt(a, 5);
                Object dados6 = modelo.getValueAt(a, 6);
                Object dados7 = modelo.getValueAt(a, 7);
                Object dados8 = modelo.getValueAt(a, 8);
                Object dados9 = modelo.getValueAt(a, 9);
                Object dados10 = modelo.getValueAt(a, 10);
                Object dados11 = modelo.getValueAt(a, 11);
                Object dados12 = modelo.getValueAt(a, 12);
                Object dados13 = modelo.getValueAt(a, 13);
                Object dados14 = modelo.getValueAt(a, 14);
                jTFornecedores.setValueAt(dados, a, 0);
                jTFornecedores.setValueAt(dados1, a, 1);
                jTFornecedores.setValueAt(dados2, a, 2);
                jTFornecedores.setValueAt(dados3, a, 3);
                jTFornecedores.setValueAt(dados4, a, 4);
                jTFornecedores.setValueAt(dados5, a, 5);
                jTFornecedores.setValueAt(dados6, a, 6);
                jTFornecedores.setValueAt(dados7, a, 7);
                jTFornecedores.setValueAt(dados8, a, 8);
                jTFornecedores.setValueAt(dados9, a, 9);
                jTFornecedores.setValueAt(dados10, a, 10);
                jTFornecedores.setValueAt(dados11, a, 11);
                jTFornecedores.setValueAt(dados12, a, 12);
                jTFornecedores.setValueAt(dados13, a, 13);
                jTFornecedores.setValueAt(dados14, a, 14);
                a++;
            }
            jTFornecedores.getColumnModel().getColumn(0).setHeaderValue("Código");
            jTFornecedores.getColumnModel().getColumn(1).setHeaderValue("CGC");
            jTFornecedores.getColumnModel().getColumn(2).setHeaderValue("Nome");
            jTFornecedores.getColumnModel().getColumn(0).setCellRenderer(centralizado);
            jTFornecedores.getColumnModel().getColumn(1).setCellRenderer(centralizado);
            jTFornecedores.getColumnModel().getColumn(2).setCellRenderer(centralizado);
            jTFornecedores.getColumnModel().getColumn(0).setPreferredWidth(50);
            jTFornecedores.getColumnModel().getColumn(1).setPreferredWidth(100);
            jTFornecedores.getColumnModel().getColumn(2).setPreferredWidth(400);
            
            jTFornecedores.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(new javax.swing.JFormattedTextField(new MaskFormatter("##.###.###/####-##"))));


            jTFornecedores.getColumnModel().getColumn(3).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(3).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(4).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(4).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(5).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(5).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(6).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(6).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(7).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(7).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(8).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(8).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(9).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(9).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(10).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(10).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(11).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(11).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(12).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(12).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(13).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(13).setMaxWidth(0);
            jTFornecedores.getColumnModel().getColumn(14).setMinWidth(0);
            jTFornecedores.getColumnModel().getColumn(14).setMaxWidth(0);
        } catch (ParseException ex) {
            Exceptions.printStackTrace(ex);
        }
     }

2 Respostas

rsantik

Tenta cria um método a parte na mesma classe! Neste método você trata o numero do CGC com o método substring da classe String e vai formatando na mão o jeito que você quer que fiquei.

Eu nunca usei esse método MaskFormatter…

Mas tenta colocar zeros no lugar de #, ficando assim:

MaskFormatter(“00.000.000/0000-00”);

Eu faria diferente, eu gravaria o CGC da empresa direto no formato 00.000.000/0000-00 na tabela, assim você evita fazer essas conversões em tempo de execução. Fica mais leve o software!!

Eder_Peixoto

Olá!

Eu discordo do rsantik. No banco de dados, é interessante que o CNPJ fique armazenado como número, para facilitar manipulações, e por clareza na modelagem (imagine ter que ficar se lembrando que o número do CNPJ NÃO (!!!) é número, mas sim um VARCHAR).

Quanto a manipulação do CNPJ no código Java, considero muito melhor a utilização de formatores (extends java.text.Format). Crie o seu, por exemplo, extendendo a classe NumberFormat. Também é válido utilizar a classe MaskFormatter, a qual já está sendo utilizada por você. Nesse caso, é necessário estudar expressões regulares. (Tente: ##.###.##0/0000-00)

Caso queira, eu já tenho um formatador para CPF/CNPJ implementado.

Criado 18 de julho de 2009
Ultima resposta 20 de jul. de 2009
Respostas 2
Participantes 3