如何子类化 DefaultTableModel 并更改其 dataVector

dok*_*oku 4 java swing

我想扩展 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;
    }
Run Code Online (Sandbox Code Playgroud)

如何在 jtable 中显示特定的 DataHolder 字段?我的表有 3 列,分别表示月、日和年。

cam*_*ckr 5

您需要为此创建一个自定义模型。DefaultTableModel 不是最好的起点。

通常,您会扩展 AbstractTableModel 并使用 ArrayList 来存储 DataHolder 对象。然后你需要实现TableModel接口的其他方法。关于如何使用表的Swing 教程向您展示了如何执行此操作的基础知识。

或者您可以使用Bean 表模型来为您完成所有工作。