我有一个从MySQL数据库表中检索信息的JTable。列标题的命名方式与它们在数据库中的名称相同。
以下是创建JTable的代码:
JScrollPane spBlockViewSchedule = new JScrollPane();
spBlockViewSchedule.setBounds(10, 285, 763, 185);
pnlBlockSched.add(spBlockViewSchedule);
tblBlockViewSchedule = new JTable();
spBlockViewSchedule.setViewportView(tblBlockViewSchedule);
以下是填充JTable的代码:
private void populateTable(String sql, JTable table) {
try {
pst = DbConnection.conn.prepareStatement(sql);
rs = pst.executeQuery();
} catch(Exception ex) {
ex.printStackTrace();
}
table.setModel(DbUtils.resultSetToTableModel(rs));
}
如何在不更改数据库表本身的列名的情况下更改JTable中显示的列名?
答案 0 :(得分:2)
创建一个空的DefaultTableModel,其代码如下:
String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
然后,在您从ResultSet读取数据的代码中,使用addRow(....)
方法将数据添加到TableMOdel。类似的东西:
while (rs.next())
{
Vector row = new Vector();
for (int i = 1; i <= columns; i++)
{
row.addElement( rs.getObject(i) );
}
model.addRow( row );
}
最后使用:
创建表格JTable table = new JTable( model );
编辑:
由于您使用的是第三方代码,因此您需要更改向模型添加数据的方式。我给了你上面的基本代码。您可以在Table From Database中看到Table From Database Example
源代码,以获取完整的示例。
或者,您可以在使用以下代码创建表后修改列标题:
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
编辑2:
您可以从TableColumnModel获取TableColumn:
TableColumnModel tcm = table.getTableColumnModel();
tcm.getColumn(0).setHeaderValue("Course Code");
...
table.repaint();
答案 1 :(得分:1)
我目前面临着和你一样的问题。
这一行:
table.setModel(DbUtils.resultSetToTableModel(rs));
由r2xml.jar提供的非常方便:)
我 通过将别名设置为 sql SELECT语句来克服问题 。 例如,
SELECT
EngagementMethodID AS [ID],
EngagementMethodDescription AS [Engagement Method Description]
FROM [STUDENT].[EngagementMethod]
这会根据需要将列标题填充为 ID 和参与方法说明。
希望它有所帮助..尽管这个问题的年代?哈哈......只是分享
答案 2 :(得分:0)
试试这个
int colCount = 0;
ResultSetMetaData rsMetaData = null;
colCount = rsMetaData.getColumnCount();
for (int k = 1; k <= colCount; k++) {
{ String columnName = null;
columnName = rsMetaData.getColumnName(k);
System.out.println(columnName);
}
将此代码与您的提取代码同时使用。
答案 3 :(得分:0)
每个JTable都有一个TableModel。此TableModel定义列(名称和数据类型)
所以找到你的桌子模型并相应地改变它。