Já desenvolvi esta Classe aqui para popular alguns objetos formatados.
[code]
/*
- 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 bancodados.BancoDados;
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.table.DefaultTableColumnModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
/**
*
-
@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, BancoDados.FabricaCosulta(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 <= 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 <= rsmd.getColumnCount(); ++i) {
//Formata campo
switch (rsmd.getColumnType(i)) {
case 2: //Types.NUMERIC:
regs.addElement(rs.getInt(i));
break;
case 91: //Types.DATE:
regs.addElement(rs.getDate(i));
break;
case 92: //Types.TIME:
regs.addElement(rs.getTime(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 4: //Types.INTEGER:
df.applyLocalizedPattern("000000");
regs.addElement(df.format(rs.getInt(i)));
break;
case 8: //Types.DOUBLE:
regs.addElement(rs.getDouble(i));
break;
case 6: //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, new 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() < 5) {
//// setForeground(Color.green);
//// }
//// }
//
//
// return this;
// }
// };
//
// return tcr;
// };
}[/code]