JTable列名显示错误

时间:2013-04-30 21:09:51

标签: java swing jtable abstracttablemodel jtableheader

我想在JTable中显示一些东西。

问题是JTable列名是" A"," B"," C",...

我的代码是这样的:

import javax.swing.JTable;

public class View extends JFrame implements Observer {

    private JTable contentTable;

    public View() {
        ...

        String[][] s = {{"test","test","test", "test}};
        String[] columnNames = { "Name", "Category", "Start", "End" };
        this.contentTable = new JTable(new MyTableModel(columnNames, s));
        this.contentPanel.add(new JScrollPane(this.contentTable));

        ...
    }

}

这是MyTableModel类

import javax.swing.table.AbstractTableModel;

    public class MyTableModel extends AbstractTableModel {

        private String[] columnNames;
        private Object[][] data;

        public MyTableModel(String[] columns, Object[][] dat){
            this.columnNames = columns;
            this.data = dat;
        }

    ...

    }

如果我不使用TableModel,它的工作原理是:this.contentTable = new JTable(s,columnNames);,但我不知道如果有一些新数据如何更改表...那&# 39;为什么我使用TableModel。

我不知道为什么列没有显示但数据显示...

亲切的问候!

1 个答案:

答案 0 :(得分:2)

在MyTableModel中,您需要覆盖

public String getColumnName(int column)

返回您的数据,例如

public String getColumnName(int column) {
  return columnNames[column];
}

您还需要覆盖

getColumnCount();

findColumnName();