动态更改JTable中的列标题文本

时间:2009-09-30 04:46:56

标签: java swing jtable

我有一个包含3列的表,其标题中包含以下值:'No.','X [mm]','Y [mm]'。此表包含以毫米为单位的点坐标。我有一个复选框,检查表格应该重新填充以显示以英寸为单位的坐标。此外,列标题值应为:'No','X [in]','Y [in]'。

简而言之,我想动态更改表的标题文本。

详细说明: 该表是JTable的子类。此外,已将'DefaultTableModel'的子类设置为表的模型。我在datamodel子类的构造函数中提供了头值。

有什么想法吗?我的应用程序只与jdk v1.4兼容,所以如果解决方案与verion兼容将会很好:)

3 个答案:

答案 0 :(得分:26)

您可以直接更新TableColumnModel:

JTableHeader th = table.getTableHeader();
TableColumnModel tcm = th.getColumnModel();
TableColumn tc = tcm.getColumn(0);
tc.setHeaderValue( "???" );
th.repaint();

答案 1 :(得分:10)

如果列号使用该代码

 jtable.getColumnModel().getColumn(5).setHeaderValue("newHeader");

答案 2 :(得分:2)

我无法在这里测试,但我很熟悉这种方法“[DefaultTableModel.setColumnIdentifiers(...)][1]”可以做你想做的事。

基本上,你运行'DefaultTableModel.getColumnCount()'来找出有多少列(除非你已经知道)。然后运行“DefaultTableModel.getColumnName(int ColumnIndex)”获取每个名称,按照您想要的方式更改它并将其放入数组中。之后,您使用“DefaultTableModel.setColumnIdentifiers(...)”将其设置回来。

希望这有帮助。