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

Java 使用MySQL数据修改JTable的列标题,java,mysql,swing,jtable,jtableheader,Java,Mysql,Swing,Jtable,Jtableheader,我有一个从MySQL数据库表中检索信息的JTable。列标题的命名方式与它们在数据库中的命名方式相同 以下是创建JTable的代码: JScrollPane spBlockViewSchedule = new JScrollPane(); spBlockViewSchedule.setBounds(10, 285, 763, 185); pnlBlockSched.add(spBlockViewSchedule); tblBlockViewSchedule = new JTable(); sp

我有一个从MySQL数据库表中检索信息的JTable。列标题的命名方式与它们在数据库中的命名方式相同

以下是创建JTable的代码:

JScrollPane spBlockViewSchedule = new JScrollPane();
spBlockViewSchedule.setBounds(10, 285, 763, 185);
pnlBlockSched.add(spBlockViewSchedule);

tblBlockViewSchedule = new JTable();
spBlockViewSchedule.setViewportView(tblBlockViewSchedule);
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的代码:

JScrollPane spBlockViewSchedule = new JScrollPane();
spBlockViewSchedule.setBounds(10, 285, 763, 185);
pnlBlockSched.add(spBlockViewSchedule);

tblBlockViewSchedule = new JTable();
spBlockViewSchedule.setViewportView(tblBlockViewSchedule);
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中显示的列名?

试试这个

       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);
        }
int colCount=0;
ResultSetMetaData rsMetaData=null;
colCount=rsMetaData.getColumnCount();
对于(intk=1;k试试这个

       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);
        }
int colCount=0;
ResultSetMetaData rsMetaData=null;
colCount=rsMetaData.getColumnCount();
对于(intk=1;k试试这个

       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);
        }
int colCount=0;
ResultSetMetaData rsMetaData=null;
colCount=rsMetaData.getColumnCount();
对于(intk=1;k试试这个

       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);
        }
int colCount=0;
ResultSetMetaData rsMetaData=null;
colCount=rsMetaData.getColumnCount();

对于(int k=1;k每个JTable都有一个TableModel。这个TableModel定义了列(名称和数据类型)


因此,找到您的表模型并相应地进行更改。

每个JTable都有一个TableModel。这个TableModel定义了列(名称和数据类型)


因此,找到您的表模型并相应地进行更改。

每个JTable都有一个TableModel。这个TableModel定义了列(名称和数据类型)


因此,找到您的表模型并相应地进行更改。

每个JTable都有一个TableModel。这个TableModel定义了列(名称和数据类型)


因此,找到您的表模型并相应地进行更改。

创建一个空的DefaultTableModel,代码如下:

String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
然后在从结果集中读取数据的代码中,使用
addRow(..)
方法将数据添加到TableMOdel中。类似于:

while (rs.next())
{
   Vector row = new Vector();

    for (int i = 1; i <= columns; i++)
    {
        row.addElement( rs.getObject(i) );
    }

    model.addRow( row );
}
编辑:

由于您使用的是第三方代码,您需要更改向模型添加数据的方式。我在上面为您提供了基本代码。有关完整示例,您可以查看数据库示例中的

或者,您可以在使用以下代码创建表后修改列标题:

String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
编辑2:

您可以从TableColumnModel获取TableColumn:

TableColumnModel tcm = table.getTableColumnModel();
tcm.getColumn(0).setHeaderValue("Course Code");
...
table.repaint();

创建一个空的DefaultTableModel,代码如下:

String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
然后在从结果集中读取数据的代码中,使用
addRow(..)
方法将数据添加到TableMOdel中。类似于:

while (rs.next())
{
   Vector row = new Vector();

    for (int i = 1; i <= columns; i++)
    {
        row.addElement( rs.getObject(i) );
    }

    model.addRow( row );
}
编辑:

由于您使用的是第三方代码,您需要更改向模型添加数据的方式。我在上面为您提供了基本代码。有关完整示例,您可以查看数据库示例中的

或者,您可以在使用以下代码创建表后修改列标题:

String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
编辑2:

您可以从TableColumnModel获取TableColumn:

TableColumnModel tcm = table.getTableColumnModel();
tcm.getColumn(0).setHeaderValue("Course Code");
...
table.repaint();

创建一个空的DefaultTableModel,代码如下:

String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
然后在从结果集中读取数据的代码中,使用
addRow(..)
方法将数据添加到TableMOdel中。类似于:

while (rs.next())
{
   Vector row = new Vector();

    for (int i = 1; i <= columns; i++)
    {
        row.addElement( rs.getObject(i) );
    }

    model.addRow( row );
}
编辑:

由于您使用的是第三方代码,您需要更改向模型添加数据的方式。我在上面为您提供了基本代码。有关完整示例,您可以查看数据库示例中的

或者,您可以在使用以下代码创建表后修改列标题:

String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
编辑2:

您可以从TableColumnModel获取TableColumn:

TableColumnModel tcm = table.getTableColumnModel();
tcm.getColumn(0).setHeaderValue("Course Code");
...
table.repaint();

创建一个空的DefaultTableModel,代码如下:

String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
然后在从结果集中读取数据的代码中,使用
addRow(..)
方法将数据添加到TableMOdel中。类似于:

while (rs.next())
{
   Vector row = new Vector();

    for (int i = 1; i <= columns; i++)
    {
        row.addElement( rs.getObject(i) );
    }

    model.addRow( row );
}
编辑:

由于您使用的是第三方代码,您需要更改向模型添加数据的方式。我在上面为您提供了基本代码。有关完整示例,您可以查看数据库示例中的

或者,您可以在使用以下代码创建表后修改列标题:

String[] columnNames = {"Course Code", "Subject Code", "Year Level", ...};
DefaultTableModel model = new DefaultTableModel(columnNames, 0);
table.getColumn("course_code").setHeaderValue("Course Code");
...
table.repaint();
编辑2:

您可以从TableColumnModel获取TableColumn:

TableColumnModel tcm = table.getTableColumnModel();
tcm.getColumn(0).setHeaderValue("Course Code");
...
table.repaint();

我现在面临着和你一样的问题

这一行:

table.setModel(DbUtils.resultSetToTableModel(rs));
由r2xml.jar提供非常方便:)

通过将别名设置为我的sql SELECT语句,我克服了这个问题。 比如说,

SELECT 
EngagementMethodID AS [ID],
EngagementMethodDescription AS [Engagement Method Description]

 FROM [STUDENT].[EngagementMethod]
这将根据需要将列标题填充为ID参与方法说明


希望能有帮助……尽管这个问题已经过时了?哈哈……只是分享一下

我现在面临着和你一样的问题

这一行:

table.setModel(DbUtils.resultSetToTableModel(rs));
由r2xml.jar提供非常方便:)

通过将别名设置为我的sql SELECT语句,我克服了这个问题。 比如说,

SELECT 
EngagementMethodID AS [ID],
EngagementMethodDescription AS [Engagement Method Description]

 FROM [STUDENT].[EngagementMethod]
这将根据需要将列标题填充为ID参与方法说明


希望能有帮助……尽管这个问题已经过时了?哈哈……只是分享一下

我现在面临着和你一样的问题

这一行:

table.setModel(DbUtils.resultSetToTableModel(rs));
由r2xml.jar提供非常方便:)

通过将别名设置为我的sql SELECT语句,我克服了这个问题。 比如说,

SELECT 
EngagementMethodID AS [ID],
EngagementMethodDescription AS [Engagement Method Description]

 FROM [STUDENT].[EngagementMethod]
这将根据需要将列标题填充为ID参与方法说明


希望能有帮助……尽管这个问题已经过时了?哈哈……只是分享一下

我现在面临着和你一样的问题

这一行:

table.setModel(DbUtils.resultSetToTableModel(rs));
由r2xml.jar提供非常方便:)

通过将别名设置为我的sql SELECT语句,我克服了这个问题。 比如说,

SELECT 
EngagementMethodID AS [ID],
EngagementMethodDescription AS [Engagement Method Description]

 FROM [STUDENT].[EngagementMethod]
这将填充列标题为ID参与方法说明