JTable... como faço?

5 respostas
magnojg

Já li os tutorias, os exemplos… mas nao consegui fazer minha jTable ficar como queria, é o seguinte quero que nas colunas ela fique com: o nome do produto, preço e o código de barras. Como faço? Valeu.

5 Respostas

Sombriks

leia os resultados da pesquisa abaoixo:

http://www.guj.com.br/jforum.java?module=search&action=search&clean=1&search_keywords=TableModel

e aqui vai um snippet de código que está em uso; é o código de um TableModel, que é o que vc realmente vai ter de implementar.

/*
 * 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()&gt0){
            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 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 -- ver se podemos deixar ele menos 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);
    }
}

É graças a isso que temos sincronia com o banco e a lista de resultados.

magnojg

Valeu Sombriks, eu já tentei esse código e nao consegui, vou continuar estudando ele pra ver se consigo “passar” para o meu… :smiley:

Proteu_Alcebidiano

mais exemplos de JTable do javaalmanac aqui

loganwlogan

Eu tive grande dificuldade com JTable até eu pegar uma passo a passo em 3 edições da java magazine lá eles ensinam direitinho como criar o seu Table Model só dar uma estudada e ir adaptando ele pra sua realidade se não me engano foram as eds 25, 26 e 27 no site tem os códigos para Download

Sds

Logan

Petronio_Braga

magnojg,

não sei se você já desenrolou, mas caso não, dá uma olhada neste link abaixo. Ele tem diversos exemplos que podem te ajudar bastante.

http://www.java2s.com/Code/Java/Swing-JFC/Table.htm

Criado 7 de dezembro de 2006
Ultima resposta 14 de jan. de 2007
Respostas 5
Participantes 5