Boa tarde a todos.
Estou tentando criar um JTable padrão, já começei, porém agora pretendo formatar a largura de cada coluna em virtude do tamanho de seu cabeçalho ou de seu conteúdo , se o tamanho do cabeçalho for menor que o de seu conteudo, prevalecerá o tamanho do conteúdo e, vice-versa.
Alguém sabe como posso fazer isso?
Estou usando NetBenas 5.5.1
Me respondam uma coisa por favor:
Posso criar modelos de Tabela, Coluna, Linha, Cabeçalho e o que mais, Para uma JTable!?
Desde Já agradeço.
Seguem abaixo minha ídeia de Popular uma JTable passando como parâmetro um ResultSet.
protected static JTable PreencheJTable(JTable jT, ResultSet rs) {
DecimalFormat df = new DecimalFormat();
SimpleDateFormat sdf = new SimpleDateFormat();
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();
Object obj = new Object();
for (int i = 1; i <= rsmd.getColumnCount(); ++i) {
obj = rs.getObject(rs.getMetaData().getColumnName(i));
if (obj == null) {
obj = new String("");
} else {
System.out.println(obj.getClass().getName());
}
//Formata campo
if (obj.getClass().getSimpleName().equals("Integer")) {
df.applyPattern("000000");
regs.addElement(df.format(obj));
} else if (obj.getClass().getSimpleName().equals("String")) {
regs.addElement(obj);
} else if (obj.getClass().getSimpleName().equals("Timestamp")) {
sdf.applyPattern("dd/MM/yyyy");
regs.addElement(sdf.format(obj));
} else if (obj.getClass().getSimpleName().equals("Boolean")) {
if ((Boolean) obj) {
regs.addElement("True");
} else {
regs.addElement("False");
}
} else if (obj.getClass().getSimpleName().equals("BigDecimal")) {
df.applyPattern("###,###,##0.00");
regs.addElement(df.format(obj));
} else {
System.out.println("Tipo foi:" + obj.getClass().getSimpleName());
}
}
//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());
// //Muda as cores da linha da tabela selecionada.
// jT.setSelectionForeground(Color.yellow);
// jT.setSelectionBackground(Color.red);
// // Remove as linhas da tabela
// jT.setShowHorizontalLines(false);
// jT.setRowSelectionAllowed(true);
// jT.setColumnSelectionAllowed(true);
} catch (SQLException errorSQL) {
JOptionPane.showMessageDialog(null, errorSQL.getMessage(), "Erro SQL", JOptionPane.ERROR_MESSAGE);
errorSQL.printStackTrace();
}
return jT;
}