JTable adicionado itens - NetBeans

3 respostas
flavi0

Olá,
criei uma JTable no netbeans…

dai para adicionar itens inicialmente eu creie este metodo

private void sprimeiro() {
        jTabela.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null, null, null}
            },
            new String [] {
                "Item", "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false, false, false
            };

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

mas fui tentar fazer o select no banco e não consegui de maneira nenhuma… fiz várias vezes tentativas de fazer trys de várias maneiras e não consegui adicionar pelo object…

eu tenho que fazer de outra maneira… ??

3 Respostas

Sombriks

tem sim, vc tem q implementar seu próprio TableModel ao invés de usar o DefaultTableModel. aí vc embute nele o select, o create, o update, o delete e o q mais precisar. aqui vai um exemplo (de um banco não-sql, ifelizmente…) de um tablemodel personalizado:

/*
 * FuncionarioTableModel.java
 *
 * Created on 18 de Novembro de 2006, 02:29
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package visual.model;

import entidades.pessoas.Funcionario;
import java.util.List;
import javax.swing.event.TableModelListener;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;
import persistencia.Banco;
import util.Util;

/**
 *  Classe FuncionarioTableModel
 *
 *  Esta classe é a implementação do modelo de tabela que é utilizado na tabela
 *de funcionários. Aqui implementamos métodos obrigatórios da interface e nos
 *apoiamos no sistemas de ouvintes já existente na classe abstrata.
 *
 * @author sombriks
 */
public class FuncionarioTableModel extends AbstractTableModel 
        implements TableModel{
    
    private List<Funcionario>data;
    private Banco b;
    private Util util;
    
    /** 
     *  Para construirmos um Modelo de Dados para funcionários, precisamos 
     *basicamente de uma referência ao banco e da classe util.
     */
    public FuncionarioTableModel(Banco b,Util util) {
        this.b=b;
        this.util=util;
    }
    
    /**
     *  Implementação requisitada pela interface
     */
    public int getRowCount() {
        return data != null ? data.size() : 0;
    }

    /**
     *  Implementação reuisitada pela interface
     */
    public int getColumnCount() {
        return 10;
    }
    
    /**
     *  Implementação requisitada pela interface e sobrecarga de método já 
     *existente na classe abstrata
     */
    public String getColumnName(int columnIndex) {
        switch(columnIndex){
            case 0 :
                return "id";
            case 1 :
                return "login";
            case 2 :
                return "nome";
            case 3 :
                return "nome do pai";
            case 4 :
                return "nome da mãe";
            case 5 :
                return "data de nascimento";
            case 6 :
                return "nº da identidade";
            case 7 :
                return "salário mensal";
            case 8 :
                return "nível de acesso";
            case 9 :
                return "telefone";
            default :
                return "";            
        }
    }
    
    /**
     *  Implementação requisitada pela interface abstrata
     */
    public Object getValueAt(int rowIndex, int columnIndex) {
        if(getRowCount()>0){
            switch(columnIndex){
                case 0:
                    return data.get(rowIndex).getId();
                case 1:
                    return data.get(rowIndex).getLogin();
                case 2:
                    return data.get(rowIndex).getNome();
                case 3:
                    return data.get(rowIndex).getNomePai();
                case 4:
                    return data.get(rowIndex).getNomeMae();
                case 5:
                    return Util.formatData(data.get(rowIndex).getDataNasc());
                case 6:
                    return data.get(rowIndex).getIdentidade();
                case 7:
                    return "R$ "+data.get(rowIndex).getSalario();
                case 8:
                    return data.get(rowIndex).getLvAcesso();
                case 9:
                    return data.get(rowIndex).getTelefone();                    
                default:
                    return null;
            }
        }return null;
    }
    
    /**
     *  Implementação requisitada pela interface e sobrecarga de método já 
     *existente na classe abstrata
     */
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return false;
    }
    
    /**
     *  Método criado para facilitar a inserção de dados no modelo.
     */
    public void insert(Funcionario f){
        if(f != null)
            b.set(f);
        select(null);
    }

    /**
     *  Método criado para facilitar a atualização de dados no modelo.
     *
     *  TODO -- isto está muito xerox do insert...
     */
    public void update(Funcionario f){
        if(f != null)
            b.set(f);
        select(null);
    }
    
    /**
     *  Método criado para facilitar a deleção de dados no modelo.
     */
    public void delete(Funcionario f){
        if(f != null)
            b.delete(f);
        select(null);
    }
 
    /**
     *  Através deste método podemos popular a tabela com dados provenientes do
     *banco de dados.
     */
    public void select(Funcionario f){
        if(f == null)
            data = b.select(Funcionario.class);
        else
            data = b.select(f);
        fireTableDataChanged();
    }
    
    /**
     *  Este método nos auxilia na seleção de um determinado funcionário para
     *podermos manipular seus dados.
     */
    public Funcionario getFuncionario(int index){
        return data.get(index);
    }
}
flavi0

não tem como eu adicionar pelo DefaultTableModel…?

tenho que criar um estilo??

loganwlogan

Amigo Flavio, até acredito que tenha contudo oDefaultTable model é bem limitado através da construção do seu próprio TableModel vc consegue termais versatilidade e agilidae vc implementa da menira que melhor for pra vc, agora para os nomes das colunas eu usaria o DefultCloumnModel ele ta da mais agilidade e vc trabalha separado o tratamento de população da JTable dos processos Administrativos como nomes e tamanhos de colunas.

Sds

Marcelo Logan

Criado 19 de dezembro de 2006
Ultima resposta 20 de dez. de 2006
Respostas 3
Participantes 3