Link e clique do mouse JTable

3 respostas
P

Prezados, sou iniciante em programação e estou fazendo uma tela de pesquisa utilizando o objeto JTable no modo visual do java. Nesse objeto estou herdando o DefaulTableModel para popular os dados com algumas colunas da tabela clientes.

Até ai tudo certo, consigo ver as informações, consegui desabilitar os campos para que o usuario não digite dentro das tabelas mas gostaria que a coluna codigo fosse um link para que o usuario pudesse filtrar um determinado cliente (por razao social, nome fantasia ou CNPJ/CPF) e ao clicar na informação referente ao codigo o sistema fechasse a tela e jogasse os dados para a tela anterior (tela de cadastro do cliente).

O codigo para carregar os dados na JTable é o seguinte:

// Carrega os dados da tabela de clientes na tela da lupa de pesquisa
        ResultSet rsLupa = null;
        Cliente cliente = new Cliente();
        rsLupa = cliente.lupaCliente();//Executa o comando de selecao e seta as informações da pesquisa
        DefaultTableModel modelo = new DefaultTableModel(){   
            public boolean isCellEditable(int rowIndex, int mColIndex) {   
                return false;   
            }   
        };//cria modelo para tabela de consulta e desabilita a funcao de edicao das celulas
        int cod;
        String razSocial;
        String fantasia;
        String cnpj;
        String cpf;
        modelo.addColumn("COD");
        modelo.addColumn("Raz Social");
        modelo.addColumn("Fantasia");
        modelo.addColumn("CNPJ / CPF");
        try {
            while (rsLupa.next()) {
                cod = rsLupa.getInt("cod");
                razSocial = rsLupa.getString("razSocial");
                fantasia = rsLupa.getString("fantasia");
                cnpj = rsLupa.getString("cnpj");
                cpf = rsLupa.getString("cpf");
                if (cnpj == null) {
                    //Atribuir valor com CPF
                    modelo.addRow(new Object[]{cod, razSocial, fantasia, cpf});
                } else {
                    //Atribuir valor com CNPJ
                    modelo.addRow(new Object[]{cod, razSocial, fantasia, cnpj});
                }
            }
            System.out.println(modelo);
            jTable1.setModel(modelo);//adiciona o modelo a tabela criada para consulta

Percebi alguns foruns comentando sobre o assunto mas todos com um exemplo usando o proprio tableModel, nesse caso como estou usando o DefaultTableModel, seria possivel transformar a coluna codigo em um link (de preferencia azul e mudando o ponteiro do mouse) e pegar a informação do codigo quando o usuario efetuar o click sobre o codigo do cliente selecionado?

3 Respostas

samuk1

Boa Tarde Amigo… Se vc andou pesquisando, sabe como funciona a caça ao “DefaultTableModel”…
Eu sou iniciante tbm, e fui muito relutante em criar o meu próprio modelo… Usava o argumento de “não querer inventar a roda novamente”… Papo de preguiçoso!

Mas resolvi , estudei , implementei e hoje sou mas que satisfeito… E Faço parte do Time que Incentiva o abandono da pratica do Default…

Então se quiser uma dica, é mais proveitoso perder uma hora lendo e criando seu Próprio TableModel, do que toda vez que for utilizar uma JTable, vc precisar de ajuda externa e ficar amarrado no código!

E outra, percebi que o pessoal não costuma ajuda muito quem utiliza a DefaultTableModel… Dai é melhor se enturmar logo! :lol:

Boa Sorte com seus Estudos.

luiz_renato

paulorborges

Conselho de alguém mais experiente: abandona de vez DefaulTableModel e implementa seu próprio TableModel através de AbstractTableModel. Como ?
http://www.guj.com.br/articles/147
http://www.guj.com.br/java/223845-ajuda-para-abandonar-defaulttablemodel
http://www.guj.com.br/java/199067-redimensionar-jtable—pra-variar–resolvido-/2#1001295.

Se vc estiver usando o Netbeans, vc seleciona o seu JTable,clica em model , clica em Set seuTable’s model property using seleciona Custom Code e na caixa de texto seuTable.setModel ( você coloca seu próprio objeto tableModel (claro antes vc deve tê-lo criado).

Tenta e se tiver dúvida posta.

ingoguilherme

Não entendi direito o que tu quis dizer, mas acho que é algo assim né. Peguei esse código de um sisteminha que fiz faz um tempo pra um trabalho de facul, eu sei que não é exatamente o que você está procurando, mas da pra tirar uma “base” creio eu pra fazer o que tu ta querendo. O código da meio pobre porque “recortei” ele do sistema, que tem muito mais coisas kkk. Espero que te ajude

Criado 25 de agosto de 2012
Ultima resposta 25 de ago. de 2012
Respostas 3
Participantes 4