2

こんにちは私はPetsと呼ばれる私が作成したクラスの配列リストを持っています。これには以下の変数があります

private String name;
private String species;
private int age;

この配列リストをjTableに表示したかったのですが、defaultTableModelを使用してsetModel()を呼び出すことで成功しました。

ただし、Jtableの並べ替えとフィルタリングの機能を追加する必要がありました。ソートとフィルタリングのためにAbstractTableModelのサブクラスを作成しているJavaチュートリアルを見てみました。ただし、データを格納するために配列を使用していました。だから私はarraylistisnteadを使用するようにコードを変更しようとしましたが、Imはこのメソッドで立ち往生しています

public Object getValueAt(int row, int col) {
    return data[row][col];
}

arraylistの1つのオブジェクトからすべての値を取得するにはどうすればよいですか?

どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

3

あなたはこれを試すことができます:

public Object getValueAt(int row, int col) {
    switch(col) {
        case 0:
           return ((Pets)data.get(row)).getName();
        case 1:
           return ((Pets)data.get(row)).getSpecies();
        case 2:
           return ((Pets)data.get(row)).getAge();          
    }
    return null;
}
于 2012-04-22T00:25:26.750 に答える
3

ArrayListは、それ自体のタイプのオブジェクトである行を保持していますか?もしそうなら、そしてあなたのArrayListがジェネリックであるなら、あなたは次のArrayList<RowItem>ようなことをすることができます:

@Override
public Object getValueAt(int row, int col) {
  if (row > getRowCount()) {
     // throw an exception
  }
  RowItem rowItem = rowItemList.get(row);
  switch (col) {
  case 0:
     return rowItem.getName();
  case 1:
     return rowItem.getLastSpecies();
  case 2:
     return rowItem.getAge();
  }
  return null; // or throw an exception
}
于 2012-04-22T00:28:47.400 に答える