Populando um Jtable só na primeira coluna

16 respostas
tiagofrutuoso

Boa noite a todos,

Preciso fazer o seguinte, estou usando o Netbeans 6.7.1+Mysql, tenho uma Jtable. Preciso pegar de uma Tabela “Prestador de Serviço”, e colocar só o nome dos Prestadores na 1ª coluna.

Segue abaixo minha criação da tabela:

//Limpando os campos da tabela antes de inserir os dados da consulta
        DefaultTableModel modelo = (DefaultTableModel)jtbCaixa.getModel();//obtem o tablemodel da tabela
        int i = 0;
        while (modelo.getRowCount() > 0){
                modelo.removeRow(i);
        }
        //Criando uma nova tabela
        jtbCaixa.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null}
            },
            new String [] {
                "Prestador de Serviço", "Entrada", "Saída"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, true, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });

O que devo fazer para colocar na 1ª coluna o nome dos “Prestador de Serviço” de uma consulta do Banco de Dados

16 Respostas

thiago_spdvr

vc pode fazer o seguinte:

for (int i=0;i<item_cons.size();i++){
                    Consulta consulta = item_cons.get(i);
                    tblser.addRow(new String [] {"",""});
                    //Joga os valores na tabela (valor, indice da linha, indice da coluna)
                    tbl_servico1.setValueAt(consulta.GetCod_serv(), i, 0);
                }
ViniGodoy

Deixa eu ver se eu entendi… você quer pegar uma tabela com vários campos, e montar outra, contendo apenas o campo “Prestador de serviço” na primeira, e única, coluna, é isso?

tiagofrutuoso

Vou fazer um teste e depois eu te dou a resposta.

Agradeço desde já sua atenção.

ViniGodoy

Tiago, do que é essa imagem do seu avatar?

Nada contra ela, só fiquei curioso mesmo. :wink:

tiagofrutuoso

Não eu preciso pegar de uma tabela de varios campos, querendo só o campo do Nome e colocar em uma tabela com 3 colunas, a 1ª coluna é o nome dos Prestadores de Serviços.

ViniGodoy

Esse jogo aí é o Neverwinter Nights?

tiagofrutuoso

É do Neverwinter Nights.

tiagofrutuoso

thiago_spdvr, Usando a tabela que eu estou criando abaixo:

//Limpando os campos da tabela antes de inserir os dados da consulta
        DefaultTableModel modelo = (DefaultTableModel)jtbCaixa.getModel();//obtem o tablemodel da tabela
        int i = 0;
        while (modelo.getRowCount() > 0){
                modelo.removeRow(i);
        }
        //Criando uma nova tabela
        jtbCaixa.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null},
                {null, null, null}
            },
            new String [] {
                "Prestador de Serviço", "Entrada", "Saída"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, true, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });

Eu iria usar esse for no lugar onde esta comentado como Criando uma nova tabela

for (int i=0;i<item_cons.size();i++){
                    Consulta consulta = item_cons.get(i);
                    tblser.addRow(new String [] {"",""});
                    //Joga os valores na tabela (valor, indice da linha, indice da coluna)
                    jtbCaixa.setValueAt(consulta.GetCod_serv(), i, 0);
                }
ViniGodoy

Legal, sou fã desse jogo.

Então, o seu problema… bem, seria melhor você entender um pouco melhor como o JTable funciona, e parar de usar o DefaultTableModel. Senão, fica muito difícil.

A JTable só exibe dados, mais nada. Você não deveria contar com os dados dela para outras coisas. Os dados delas ficam em modelos, e esses modelos compreendem suas próprias classes.

Esse tópico aqui, explica como fazer um TableModel, comece estudando isso. Depois, podemos ir para como compor um modelo a partir de outro:
http://www.guj.com.br/posts/list/132698.java#714605

tiagofrutuoso

ViniGodoy,

Pelo que eu vi por cima no teu exemplo que enviou, nele você não limita o numero de linhas fixas e sim voce colocaria o numero de linha de acordo com o que esta no seu Banco por exemplo??

thiago_spdvr

É de Caxambú, MG, dentro do parque das águas vc pega o teleferico e lá de cima vc vê toda a cidade, muito bacana.
Vale a pena visitar.

thiago_spdvr

Na verdade, seria na hora de alimentar a tabela mesmo, com os seus dados, ai vc utiliza a tabela que vc criou.

Obs.: Este exemplo é o que eu uso, pode ser que haja outra solução melhor.

Marky.Vasconcelos

Acredito que ele esteja falando do outro tiago.

A que tem uma foto de um jogo.

ViniGodoy é fã de jogos.

ViniGodoy

É, era do Tiago sem H… heheheheh

Mas, de qualquer forma, foi legal saber de onde surgiu a outra foto também.

thiago_spdvr

ta blz …

tiagofrutuoso

Pessoal brigado pela força, voces me deram muitas ideias e eu consegui resolver o meu problema, segue abaixo a solução:

public void preencherjtbCaixa(){

        jtbCaixa.getColumnModel().getColumn(0).setPreferredWidth(10);
        jtbCaixa.getColumnModel().getColumn(1).setPreferredWidth(140);
        jtbCaixa.getColumnModel().getColumn(2).setPreferredWidth(50);
        jtbCaixa.getColumnModel().getColumn(3).setPreferredWidth(50);

        DefaultTableModel modelo = (DefaultTableModel)jtbCaixa.getModel();
        modelo.setNumRows(0);

        try {
            rs = DelegatePrestServico.Select();
            while(rs.next()){
                modelo.addRow(new Object[]{rs.getString(1),rs.getString(3),null,null});
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(frame,
                                "Erro para preencher a tabela com os Prestadores de Serviço."
                                + "Mensagem do sistema :"
                                + e.getMessage() ,
                                "Erro!",
                                JOptionPane.INFORMATION_MESSAGE,
                        erro);
        }
    }
    
    /** Creates new form TelaCaixa */
    public TelaCaixa(String[] caixa) {
        initComponents();

        //Limpando os campos da tabela antes de inserir os dados da consulta
        DefaultTableModel modelo = (DefaultTableModel)jtbCaixa.getModel();//obtem o tablemodel da tabela
        int i = 0;
        while (modelo.getRowCount() > 0){
                modelo.removeRow(i);
        }

        //Criando uma nova tabela
        jtbCaixa.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null,null, null, null},
                {null,null, null, null},
                {null,null, null, null},
                {null,null, null, null},
                {null,null, null, null},
                {null,null, null, null},
                {null,null, null, null},
                {null,null, null, null},
                {null,null, null, null}
            },
            new String [] {
                "Código","Prestador de Serviço", "Entrada", "Saída"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, true, true
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });

        preencherjtbCaixa();

Queria preencher as 2 primeiras colunas de uma tabela X e as 2 segundas colunas o usuario preenche e eu salvo tudo em uma outra tabela Y.

Brigado pela força.

Criado 5 de outubro de 2009
Ultima resposta 14 de out. de 2009
Respostas 16
Participantes 4