Ref.: Extending DefaultTableColumnModel e TableColumn

0 respostas
P

Boa noite,

Alguém pode me ajudar a implementar  "DefaultTableColumnModel"  e "TableColumn" segundo este código?
/*
 * 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.awt.Color;
import java.awt.Component;
import java.awt.Font;
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.JOptionPane;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;

/**
 *
 * @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 {
            ResultSetMetaData rsmd = rs.getMetaData();
            
            //Adiciona cabeçalho das colunas
            Vector cols = new Vector();
            for (int i = 1; i &lt= rsmd.getColumnCount(); ++i) {
                Vector conteudoCols = new Vector();
                
                conteudoCols.addElement(rsmd.getColumnName(i));
                conteudoCols.addElement(rsmd.getColumnType(i));
                conteudoCols.addElement(rsmd.getColumnTypeName(i));
                conteudoCols.addElement(rsmd.getColumnDisplaySize(i));
                
                cols.addElement(conteudoCols);
            }
            
            //Adiciona registro a JTable
            Vector lins = new Vector();
            if (rs.isBeforeFirst()) {
                while (rs.next()) {
                    Vector regs = new Vector();
                    for (int i = 1; i &lt= rsmd.getColumnCount(); ++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));
                        }
                    }
                    
                    //Adiciona registro fisicamente
                    lins.addElement(regs);
                }
            }
            
            //Configura Tabela
            jT.setModel(new ModeloTabela(lins, cols));
            jT.setColumnModel(new ModeloColunaTabela(cols));
            jT.getTableHeader().setDefaultRenderer(CelulaCabecalhoTabela(jT.getTableHeader()));
            jT.setDefaultRenderer(Object.class, CelulaTabela());
            
        } catch (SQLException errorSQL) {
            JOptionPane.showMessageDialog(null, errorSQL.getMessage(), "Erro SQL", JOptionPane.ERROR_MESSAGE);
            errorSQL.printStackTrace();
        }
        
        return jT;
    }
    
    //Define modelo de coluna
    protected static TableColumnModel DefineModeloColunaTabela(Vector lins, Vector cols) {
        //
        TableColumnModel tcm = new DefaultTableColumnModel() {
            public boolean isCellEditable(int rowIndex, int mColIndex) {
                return false;
            }
        };
        
        return tcm;
    };
    
    protected static TableCellRenderer CelulaCabecalhoTabela(JTableHeader jTH) {
        final TableCellRenderer tcrNew = jTH.getDefaultRenderer();
        
        //
        TableCellRenderer tcr = new TableCellRenderer() {
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column ) {
                
                Component comp = tcrNew.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
                
                comp.setFont(new Font("Arial", 1, 12));
                comp.setForeground(new Color(0,0,0));
                comp.setBackground(new Color(236,233,216));
                
                return comp;
            }
        };
        
        return tcr;
    };
    
    protected static TableCellRenderer CelulaTabela() {
        //
        TableCellRenderer tcr = new DefaultTableCellRenderer() {
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                
                super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
                
                //
                if (isSelected) {
                    setBackground(Color.WHITE);
                } else {
                    if (row % 2 == 0) {
                        setBackground(Color.CYAN);
                    } else {
                        setBackground(Color.LIGHT_GRAY);
                    }
                }
                
                setHorizontalAlignment(SwingConstants.RIGHT);
                
//                //Alinha 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));
//                }
                
//
//                if (column == 0) {
//                    if (new BigDecimal(value.toString()).intValue() &lt 5) {
//                        setForeground(Color.green);
//                    }
//                }
                
                
                return this;
            }
        };
        
        return tcr;
    };
    
}
Criado 14 de agosto de 2007
Respostas 0
Participantes 1