Mascara cnpj em jtable

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.

Voce usa netbeans?

uso sim.

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

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

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

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

espera que vo da uma pesquisa como faz xD

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

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

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.

[code]SimpleDateFormat formatter = new SimpleDateFormat(“dd/MM/yyyy”);
MaskFormatter cnpj = new MaskFormatter("##.###.###/####-##");
//cnpj.setValidCharacters(“0123456789”);
// 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);[/code]

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.

Olá!

Voce vai ter que usar um TableCellEditor.

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

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.

cara acho q jtextfield dentro de tabela nao rola

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

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.

[quote=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.[/quote]

É 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…

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());

[quote]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 [/quote]

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

[quote]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());
[/quote]

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.

No objeto format.