5

コンストラクターを使用して何かを理解できませんJTable(TableModel dm)

LinkedList を使用してデータを管理しているので、表示するために次のように拡張しましたAbstractTableModel

public class VolumeListTableModel extends AbstractTableModel {

    private static final long serialVersionUID = 1L;
    private LinkedList<Directory> datalist;
    private Object[] columnNames= {"ID", "Directory", "Wildcard"};


    public VolumeListTableModel(){
    }

    public void setDatalist(LinkedList<Directory> temp){
        this.datalist = temp;
    }

    public LinkedList<Directory> getDatalist(){
        return (LinkedList<Directory>) this.datalist.clone();
    }

    public Object[] getColumnNames() {
        return this.columnNames;    
    }

    @Override
    public int getColumnCount() {
        return Directory.numCols;
    }

    @Override
    public int getRowCount() {
        return this.datalist.size();
    }

    @Override
    public Object getValueAt(int row, int col) {

        Directory temp = this.datalist.get(row);

        switch(col){
        case 0:
            return temp.getId();
        case 1:
            return temp.getPath();
        case 2:
            return temp.getWildcard();
        default:
            return null;        
        }
    }

GUI を実行すると、 A、*B*、Cというラベルの付いた列名が表示されるため、何か間違ったことをしています。

4

4 に答える 4

15

AbstractTableModelにはgetColumnNamesというメソッドがないため、このメソッドは無視されていると思います。オーバーライドする実際のメソッドはgetColumnNameメソッドです。

このメソッドをVolumeListTableModelクラスに追加してみてください

public String getColumnName(int column) {
    return columnNames[column];
}
于 2010-11-16T10:10:31.247 に答える
4

getColumnNameあなたの場合は単にメソッドをオーバーライドする必要があります

return columnNames[column];
于 2010-11-16T10:12:37.277 に答える
3

このメソッドをオーバーライドする必要があります:

public String getColumnName(int column)
于 2010-11-16T10:15:38.837 に答える
0

AbstractTableModelにはgetColumnNamesメソッドはありませんが、実装は簡単です。

public class VolumeListTableModel extends AbstractTableModel {

    // [...]

    public String[] getColumnNames() {

        String[] columnNames = new String[this.getColumnCount()];

        for (int i = 0, columnCount = this.getColumnCount(); i < columnCount; i++) {    
            columnNames[i] = this.getColumnName(i);
        }

        return columnNames;

    }

    // [...]

}
于 2013-06-14T08:35:12.740 に答える