我想扩展DefaultTableModel并更改其dataVector。 我想让dataVector在列中仅显示DataHolder的特定字段:
public class MyTableModel extends DefaultTableModel {
/**
* The data vector
*/
private Vector<DataHolder> dataVector_;
//overridden method to add row in the table model
public void addRow(DataHolder rowData) {
insertRow(getRowCount(), rowData);
}
public void insertRow(int row, DataHolder rowData) {
dataVector_.insertElementAt(rowData, row);
fireTableRowsInserted(row, row);
}
...} //end of MyTableModel
class DataHolder{
private int age;
private int year;
private int month;
private int day;
}
如何在jtable中显示特定的DataHolder字段?我的表有3列,分别为月,日和年。
答案 0 :(得分:4)
您需要为此创建自定义模型。 DefaultTableModel不是最好的起点。
通常,您将扩展AbstractTableModel并使用ArrayList存储DataHolder对象。然后,您需要实现TableModel接口的其他方法。 How to Use Tables上的Swing教程向您展示了如何执行此操作的基础知识。
或者您可以使用为您完成所有工作的Bean Table Model。
答案 1 :(得分:1)
您必须覆盖getValueAt(...)
方法:
@Override
public Object getValueAt(int row, int column) {
DataHolder data = dataVector_.get(row);
switch(column) {
case 0: return data.month;
case 1: return data.day;
case 2: return data.year;
default: return null;
}
答案 2 :(得分:0)
您想在表格模型或表视图中更改此设置吗?如果您正在为视图使用JTable,我是否可以建议您使用TableColumnModel来访问JTable。