java - 重命名自定义 JTable 的列 - Java

标签 java swing jtable

我在我的应用程序中使用此代码:https://stackoverflow.com/a/8187799 。我需要在列和行上显示一个带有自定义标题的表格,因此需要 JTableRowHeader

我了解如何使用此代码更改行名称,但我找不到应该更改列名称的位置。由于我不太熟悉这个概念,所以我对此感到有点挣扎。

我尝试在 model = new DefaultTableModel() 中添加此代码,但它不起作用,列仍然标记为 AB 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 用于实际数据,headerTable 用于存储数据。行标题。您更改的模型仅用于 headerTable,因此不会影响您看到的列,因为这些列是由 table 提供的。

我不会/无法评论为什么使用 2 个表(这看起来仍然很奇怪),所以我只关注列名称:将它们设置在 table 上。

一种方法是提供您自己的表格模型,另一种方法可能是事后重新调整它们:

for( int i = 0; i < table.getColumnCount(); i++ ) {
  table.getColumnModel().getColumn( i ).setHeaderValue( "Column " + i );
}

关于java - 重命名自定义 JTable 的列 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43224585/

相关文章:

java - 如何从 .t​​xt 文件读取二维数组?

java - 等待按钮按下 JButton

java - 将图像保存为 PDF 但总是得到相同的图像

java - 绑定(bind)组件 <-> 容器(Enabled 属性)

java - 覆盖 Swing 中的列表选择

java - 如何通过 JTable 中的 JComboBox 获取选定值

Java 和 Android 日历按月获取所有日期

java - 禁止从 java 中的 jar 文件中提取

java - 如何重置 JLabel

java - 如何在java中的 ListView 中绑定(bind)arraylist