使用MySQL数据修改JTable的列标题

时间:2014-03-18 13:47:46

标签: java mysql swing jtable jtableheader

我有一个从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中显示的列名?

4 个答案:

答案 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定义列(名称和数据类型)

所以找到你的桌子模型并相应地改变它。