重命名自定义 JTable 的列 - Java
Rename custom JTable's columns - Java
我正在为我的应用程序使用此代码:。我需要在列和行上显示带有自定义标题的 table,因此 JTableRowHeader
.
我了解如何使用此代码更改行名称,但我找不到应该更改列名称的位置。由于我不太熟悉这个概念,所以我有点苦恼。
我试图在 model = new DefaultTableModel()
中添加此代码,但它不起作用,列仍然标记为 A
、B
、C
等.:
@Override
public String getColumnName(int column) {
switch (column) {
case 0: //First column name:
return "Name1";
case 1: //Second column name:
return "Name2";
//case 2: More names ....
default: // other columns that are not defined above
// using default in a switch statement is always the best practice
return "";
}
}
编辑:我的代码与我链接的代码相同,只是我在此处添加了方法 getColumnName(int index)
,但它不起作用:
model = new DefaultTableModel() {
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount() {
return 1;
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
@Override
public int getRowCount() {
return JTableRow.this.getRowCount();
}
@Override
public Class<?> getColumnClass(int colNum) {
switch (colNum) {
case 0:
return String.class;
default:
return super.getColumnClass(colNum);
}
}
@Override
public String getColumnName(int column) {
return "test";
}
};
如果您查看似乎已复制的代码,您会注意到使用了 2 个 table:table
用于实际数据,headerTable
对于行 headers。您一直在更改的模型仅用于 headerTable
,因此它不会影响您看到的列,因为这些列由 table
.
提供
我不会t/can不评论为什么使用 2 tables(这看起来仍然很奇怪)所以我只关注列名:将它们设置为 table
.
一种方法是提供您自己的 table 模型,另一种可能是事后重新调整它们:
for( int i = 0; i < table.getColumnCount(); i++ ) {
table.getColumnModel().getColumn( i ).setHeaderValue( "Column " + i );
}
我正在为我的应用程序使用此代码:。我需要在列和行上显示带有自定义标题的 table,因此 JTableRowHeader
.
我了解如何使用此代码更改行名称,但我找不到应该更改列名称的位置。由于我不太熟悉这个概念,所以我有点苦恼。
我试图在 model = new DefaultTableModel()
中添加此代码,但它不起作用,列仍然标记为 A
、B
、C
等.:
@Override
public String getColumnName(int column) {
switch (column) {
case 0: //First column name:
return "Name1";
case 1: //Second column name:
return "Name2";
//case 2: More names ....
default: // other columns that are not defined above
// using default in a switch statement is always the best practice
return "";
}
}
编辑:我的代码与我链接的代码相同,只是我在此处添加了方法 getColumnName(int index)
,但它不起作用:
model = new DefaultTableModel() {
private static final long serialVersionUID = 1L;
@Override
public int getColumnCount() {
return 1;
}
@Override
public boolean isCellEditable(int row, int col) {
return false;
}
@Override
public int getRowCount() {
return JTableRow.this.getRowCount();
}
@Override
public Class<?> getColumnClass(int colNum) {
switch (colNum) {
case 0:
return String.class;
default:
return super.getColumnClass(colNum);
}
}
@Override
public String getColumnName(int column) {
return "test";
}
};
如果您查看似乎已复制的代码,您会注意到使用了 2 个 table:table
用于实际数据,headerTable
对于行 headers。您一直在更改的模型仅用于 headerTable
,因此它不会影响您看到的列,因为这些列由 table
.
我不会t/can不评论为什么使用 2 tables(这看起来仍然很奇怪)所以我只关注列名:将它们设置为 table
.
一种方法是提供您自己的 table 模型,另一种可能是事后重新调整它们:
for( int i = 0; i < table.getColumnCount(); i++ ) {
table.getColumnModel().getColumn( i ).setHeaderValue( "Column " + i );
}