Mascara cnpj em jtable

18 respostas
W

Galera eu tenho uma tabela onde tenho o compo de cnpj só que salvo ele sem a mascara egostaria de na hora de mostrar na tela ele tivese com masara a mascara é a seguinte

MaskFormatter cnpj = new MaskFormatter("##.###.###/####-##");

mais uma vez agradeço a atenção.

18 Respostas

F

Voce usa netbeans?

W

uso sim.

F

1o use um JFormattedtexField
2o Vá nas propriedades do mesmo e onde diz formatterFactory coloque a máscara de seu interesse,voce pode criar uma também.

Vlw

W

correto meu caro ai eu coloco o JFormattedtexField dentro da Jtable (grid)?

teria um exemplo?, grato pela atenção.

F

bah nao vi ali que tu escreveu q tinha uma tabela hahahahu

espera que vo da uma pesquisa como faz xD

W

ok, fico no aguardo, agradeço muito a atenção.

F

Como voce faz a sua tabela consegue colocar o código para vermos?

W

consigo sim segue o código abaixo.

aqui é onde crio a tabela

DefaultTableModel tmFornecedor = new DefaultTableModel(null, new String[]{"Código", "Fantasia", "Razão", "Cadastro", "Cnpj", "Inscrição", "Cep", "Endereço", "Número", "Compl", "Bairro", "Cidade", "Estado", "Telefone", "Fax", "Celular", "E-mail", "Http", "Usuário"});
    //ListSelectionModel lsmFornecedor;
    List<FornecedorVO> fornecedor;
    /** Creates new form Fornecedor */
    public Fornecedor() {
        initComponents();
        jtFornecedor.getColumn(jtFornecedor.getColumnName(0)).setPreferredWidth(70);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(1)).setPreferredWidth(200);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(2)).setPreferredWidth(400);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(3)).setPreferredWidth(80);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(4)).setPreferredWidth(110);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(5)).setPreferredWidth(100);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(6)).setPreferredWidth(80);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(7)).setPreferredWidth(200);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(8)).setPreferredWidth(50);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(9)).setPreferredWidth(100);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(10)).setPreferredWidth(100);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(11)).setPreferredWidth(150);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(12)).setPreferredWidth(50);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(13)).setPreferredWidth(100);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(14)).setPreferredWidth(100);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(15)).setPreferredWidth(100);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(16)).setPreferredWidth(200);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(17)).setPreferredWidth(150);
        jtFornecedor.getColumn(jtFornecedor.getColumnName(18)).setPreferredWidth(100);
    }

este é onde preencho os dados na tabela.

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
            MaskFormatter cnpj = new MaskFormatter("##.###.###/####-##");
            //cnpj.setValidCharacters("[telefone removido]");
            // Date datasistema=new Date();
            //String data;//= formatter.format(datasistema);


            String [] campos = new String[] {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null};

            for (int i = 0; i < fornecedor.size(); i++){
                tmFornecedor.addRow(campos);
                tmFornecedor.setValueAt(fornecedor.get(i).getId(), i, 0);
                tmFornecedor.setValueAt(fornecedor.get(i).getNome(), i, 1);
                tmFornecedor.setValueAt(fornecedor.get(i).getRazao(), i, 2);
                tmFornecedor.setValueAt(formatter.format(fornecedor.get(i).getCadastro()), i, 3);
                tmFornecedor.setValueAt(fornecedor.get(i).getCnpj(), i, 4);
                tmFornecedor.setValueAt(fornecedor.get(i).getInscricao(), i, 5);
                tmFornecedor.setValueAt(fornecedor.get(i).getCep(), i, 6);
                tmFornecedor.setValueAt(fornecedor.get(i).getEndereco(), i, 7);
                tmFornecedor.setValueAt(fornecedor.get(i).getNumero(), i, 8);
                tmFornecedor.setValueAt(fornecedor.get(i).getCompl(), i, 9);
                tmFornecedor.setValueAt(fornecedor.get(i).getBairro(), i, 10);
                tmFornecedor.setValueAt(fornecedor.get(i).getCidade(), i, 11);
                tmFornecedor.setValueAt(fornecedor.get(i).getEstado(), i, 12);
                tmFornecedor.setValueAt(fornecedor.get(i).getTel(), i, 13);
                tmFornecedor.setValueAt(fornecedor.get(i).getFax(), i, 14);
                tmFornecedor.setValueAt(fornecedor.get(i).getCel(), i, 15);
                tmFornecedor.setValueAt(fornecedor.get(i).getEmail(), i, 16);
                tmFornecedor.setValueAt(fornecedor.get(i).getHttp(), i, 17);
                tmFornecedor.setValueAt(fornecedor.get(i).getNome_usuario(), i, 18);

já li aqui muito a respeito de DefaultTableModel não´é uma boa opção porém eu não consegui ainda fazer meu propio model, estudar já estudei mais aunda não consegui estou tentando assim que coseguir vou migrar para o modelInteligente como chamão.

M

Olá!

Voce vai ter que usar um TableCellEditor.

Veja aqui: http://java.sun.com/docs/books/tutorial/uiswing/components/table.html

W

meu caro dei uma olhada no link porem não achei nada referente a mascara, achei o chekbox, o combobox, mais nada de mscara.

o ideal realmente seria colocar o JFormattedtexField dentro da Jtable (grid)?

mais uma vez agradeço a atenção.

F

cara acho q jtextfield dentro de tabela nao rola

F

escrevr assim na sua tabela tenta ai nao tenho certeza se vai da certo

tmFornecedor.setValueAt(cnpj.format(fornecedor.get(i).getCnpj()), i, 4);

Vlw

W

tb estou com vc o ideal é achar um metodo que formata o campo na grid.

caso encontre posta ai por favor, ainda estou procurando tb.

M

william_sistema:
meu caro dei uma olhada no link porem não achei nada referente a mascara, achei o chekbox, o combobox, mais nada de mscara.

o ideal realmente seria colocar o JFormattedtexField dentro da Jtable (grid)?

mais uma vez agradeço a atenção.

É isso meu caro. O CellEditor encapsula um componente. Do mesmo jeito que ele esta usando um CheckBox, voce vai colocar o seu JFormattedtexField. Isso é possível com qualquer componente: JComboBox, algum componente de data e etc…

M

Tenta assim:

/**
 *
 * @author marciliosouza
 */
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;
    }
}

Na JTable voce faz:

jtable.getColumnModel().getColumn(1).setCellEditor(new FormatedCellEditor());
W

escrevr assim na sua tabela tenta ai nao tenho certeza se vai da certo

view plaincopy to clipboardprint?

tmFornecedor.setValueAt(cnpj.format(fornecedor.get(i).getCnpj()), i, 4);

tmFornecedor.setValueAt(cnpj.format(fornecedor.get(i).getCnpj()), i, 4);

Vlw

assim nã fonciona o cnpj não tem o format.

W

Tenta assim:

view plaincopy to clipboardprint?
/**
*

  • @author marciliosouza
    */
    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;
    

    }
    }
    /**

  • @author marciliosouza
    */
    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;
    

    }
    }

Na JTable voce faz:

view plaincopy to clipboardprint?
jtable.getColumnModel().getColumn(1).setCellEditor(new FormatedCellEditor());

fiz conforme me ordenou porem ainda não formatou não achei o lugar para setar a mascara… onde posso setar a mascara?

mais uma vez grato pela atenção.

M

No objeto format.

Criado 18 de maio de 2010
Ultima resposta 24 de mai. de 2010
Respostas 18
Participantes 3