【发布时间】:2017-04-05 07:28:06
【问题描述】:
我在我的应用程序中使用此代码:https://stackoverflow.com/a/8187799。我需要在列和行上显示一个带有自定义标题的表格,因此是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";
}
};
【问题讨论】:
-
你试过
repaint表和容器吗? -
@Sarz Nop,我昨天才知道 JTable 的存在所以我真的不知道什么时候执行这个?
-
"我尝试在
model = new DefaultTableModel()中添加此代码" - 你是如何添加的?您是否创建了DefaultTableModel的子类?你真的更换了模型吗?最好发minimal reproducible example。 -
考虑提供一个可运行的示例来演示您的问题 - 它消除了大部分猜测工作
-
我编辑了我的帖子。我没有给出整个代码,因为它与链接的代码完全相同,除了我解释的更改(为了尝试重命名列而进行的)。如果您仍然需要,我可以发布它,但我认为这不是必需的。