更改AbstractTableModel的列名称

时间:2014-02-21 15:01:49

标签: java swing abstracttablemodel

是否可以动态更改AbstractTableModel列名?

我正在尝试实施 setColumnName(0,“Speed rpm”)方法。

public class MyModel extends AbstractTableModel {

private String[] columnNames = {"Speed", "Pressure",
    "Force"};
public ArrayList<Values> list;

public MyModel() {

    list = new ArrayList<Values>();
}

public void setColumnName(int i, String name) {
    columnNames[i,name];
}
@Override
public int getRowCount() {
    return list.size();
}

@Override
public int getColumnCount() {
    return columnNames.length;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}

}

2 个答案:

答案 0 :(得分:3)

更改

public void setColumnName(int i, String name) {
    columnNames[i,name];
}

public void setColumnName(int i, String name) {
    columnNames[i] = name;
    fireTableStructureChanged();
}

以下(总是)来自@camickr的好建议

  

调用fireTableStructureChanged()方法将导致所有自定义   渲染器/编辑器将丢失。你可以使用   创建时使用table.setAutoCreateColumnsFromModel(..)方法   表,以防止这种情况发生

答案 1 :(得分:2)

更改TableColumn:

tableColumn.setHeaderValue(...);
table.getTableHeader().repaint();

您可以使用以下方式获取TableColumn:

table.getColumn(...); // or
table.getColumnModel().getColumn(...);