Ref.: Configurando JTable

Caríssimos,

       Sou leigo no JAVA, porém tenho muito boa vontade de aprender.
       Estou a mais de um ano tentando aprender.
       Tenho boas idéias, só preciso aprender a implemeta-las no JAVA.

       Preciso de ajuda no que diz respeito a configurar e formatar JTABLES.

       Desejo entender melhor esse tal de DefaultTableModel e DefaultTableCellRenderer.

Estou tentando desenvolver isso:

Preciso de ajuda paciente.

DESDE JÁ AGRADEÇO.

/*
 * PreencheObjetos.java
 *
 * Created on 5 de Agosto de 2007, 19:37
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package utilitarios;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author PRSantos
 */
public class PreencheObjetos {
    /** Creates a new instance of PreencheObjetos */
    public static Object fill(Object objeto, StringBuffer sbSQL, Connection Conexao) {
        System.out.println("Populando Objeto - " + objeto.getClass().getName());
        
        if (objeto.getClass().getName().equals("ComboBox")) {
            
        } else if (objeto.getClass().getName().equals("javax.swing.JTable")) {
            objeto = PreencheJTable((JTable) objeto, RetornaResultSet.getResultSet(sbSQL, Conexao));
        } else if (objeto.getClass().getName().equals("javax.swing.DataGridView")){
            
        };
        
        return objeto;
    }
    
    protected static JTable PreencheJTable(JTable jt, ResultSet rs) {
        DecimalFormat df = new DecimalFormat();
        SimpleDateFormat sdf = new SimpleDateFormat();
        
//        NumberFormat nf = new NumberFormat();
//        nf.
        
        
        try {
            //Adiciona cabeçalho das colunas
            Vector cols = new Vector();
            Vector tamanhoColuna =  new Vector();
            ResultSetMetaData rsmd = rs.getMetaData();
            for (int i = 1; i &lt= rsmd.getColumnCount(); ++i) {
                cols.addElement(rsmd.getColumnName(i));
                tamanhoColuna.add(rsmd.getColumnDisplaySize(i));
            }
            
            //Adiciona registro a GRID
            Vector lins = new Vector();
            if (rs.isBeforeFirst()) {
                while (rs.next()) {
                    Vector regs = new Vector();
                    
                    System.out.println("---------- Tipo ---------- Início");
                    for (int i = 1; i &lt= rsmd.getColumnCount(); i++) {
                        
                        System.out.println("Tipo ----&gt " + rsmd.getColumnTypeName(i) + " - " + rsmd.getColumnType(i));
                        System.out.println("Tamnaho ----&gt " + rsmd.getColumnDisplaySize(i));
                        
                        //Formata campo
                        switch (rsmd.getColumnType(i)) {
                            case 02: //Types.NUMERIC:
                                regs.addElement(rs.getInt(i));
                                break;
                            case 91: //Types.DATE:
                                regs.addElement(rs.getDate(i));
                                break;
                            case 93: //Types.TIMESTAMP:
                                sdf.applyLocalizedPattern("dd/MM/yyyy");
                                regs.addElement(sdf.format(rs.getTimestamp(i)));
                                break;
                            case 01: //Types.CHAR:
                                regs.addElement(rs.getString(i));
                                break;
                            case 12:  //Types.VARCHAR:
                                regs.addElement(rs.getString(i));
                                break;
                            case 04: //Types.INTEGER:
                                df.applyLocalizedPattern("000000");
                                regs.addElement(df.format(rs.getInt(i)));
                                break;
                            case 06: //Types.FLOAT:
                                regs.addElement(rs.getDouble(i));
                                break;
                            default:
                                System.out.println("Tipo foi:" + rsmd.getColumnTypeName(i));
                        }
                    }
                    System.out.println("---------- Tipo ---------- Fim");
                    
                    lins.addElement(regs);
                }
            }
            
            //Configura Tabela
            jt.setModel(DefineModelo(lins, cols));
            jt.setAutoCreateColumnsFromModel(false);
            jt.setColumnSelectionAllowed(false);
            jt.getTableHeader().setReorderingAllowed(false);
            jt.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            jt.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
            jt.setBorder(BorderFactory.createRaisedBevelBorder());
            //jt.setDefaultRenderer(Object.class, tcrDados);
            
//////////////////////////////////            //Largura das colunas
//////////////////////////////////            for (int i = 0; i &lt tamanhoColuna.size(); i++  ) {
//////////////////////////////////                jt.getColumnModel().getColumn(i).setPreferredWidth(rsmd.getColumnDisplaySize(i + 1) * 8);
//////////////////////////////////                //jt.getTableHeader().getColumnModel().getColumn(1).setHeaderRenderer(tcrCabecalho);
//////////////////////////////////                
//////////////////////////////////                System.out.println("Tamanho da Coluna - " + jt.getColumnModel().getColumn(i).getPreferredWidth());
//////////////////////////////////            }
            
        } catch (SQLException errorSQL) {
            JOptionPane.showMessageDialog(null, errorSQL.getMessage(), "Erro SQL", JOptionPane.ERROR_MESSAGE);
            errorSQL.printStackTrace();
        }
        
        return jt;
    }
    
    //Define modelo
    protected static DefaultTableModel DefineModelo(Vector lins, Vector cols) {
        //
        DefaultTableModel dtm = new DefaultTableModel(lins, cols) {
            public boolean isCellEditable(int rowIndex, int mColIndex) {
                return false;
            }
        };
        
        return dtm;
    };
    
}

Qual sua real duvida?

e uma dica, NÃO use DefaultTableModel crie uma classe que extende AbstractTableModel