限定しりとり

度々質問させて頂いてます。

Jtableでファイルのリストを表示させたいのですが、アプリ外(Windowsのエクスプローラ)からのD&Dしてきたファイルを、最初に要素のない状態で定義したArrayList型の変数?にいれる(addする)ので、はじめはArrayList型変数には知らない(意味を持たない)値が入っているか、JTableが、表示する範囲の要素がなくて困ってしまっているはずです。たぶんそのせいでJTableに表示されないんだと思います。(妄想です)
nullで初期化しようとも考えたのですがそうするとaddが使えなくなってしまい(nullが入っているところの後ろからaddされる)、同じ班の人が作ってくれたクラスを手直し?しなくてはなりません。
どうすればいいでしょう。

ちょっと日本語がイカれてますができれば助けて欲しいです。
補足ならいくらでもします。

//TableModelクラス

public class TableModel extends AbstractTableModel{
public static DataList mainList = new DataList();
TableModel(){

}

@Override
public int getColumnCount() {
return 4;
}

@Override
public int getRowCount() {
return 1;
}

@Override
public String getValueAt(int row, int column) {
String fileName = mainList.GetData(row).GetName();
String lastModifiedDate = mainList.GetData(row).GetDate().toString();
String filePath = mainList.GetData(row).GetPath();
switch(column){
case 0:
return null;
case 1:
return fileName;
case 2:
return lastModifiedDate;
case 3:
return filePath;
default:
return null;
}
}
public String getColumnName(int column){
switch(column){
case 0:
return null;
case 1:
return "ファイル名";
case 2:
return "更新日時";
case 3:
return "パス";
default:
return null;
}
}

}

//DataListクラス

public class DataList{
List<FileData> dataList;

public DataList(){
this.dataList = new ArrayList<FileData>();
}

// 末尾にデータを追加
public void AddData(FileData fd){
this.dataList.add(fd);
}
}

FileDataクラスは単純にファイル名、パス、更新日時(Date型)を持つクラスです
rowが1なのはいろいろ試したからで、実際は30行くらい表示していたいです。

A 回答 (1件)

おっしゃっている通り、何をいっているかわからないので、


何を聞きたいのかよくわかりませんが、
気になった点をいくつか記載します。


・DataListクラスの必要性が感じられません。
直接ArrayListでいいのては?

・getValueAt、getColumnNameでnullを返すケースがありますが、
これは問題ないでしょうか?確認してたほうがいいかと思います。
わからなければ、""を返した方が無難です。


・getRowCountほコンスタントに1を返していますが、
これはデータ数を返すのがいいでしょう。
このままのソースでいくなら(先の指摘を反映しないなら)、

return mainList.dataList.size();


となります。


・このコードだけでは判断できませんが、データ数やデータの内容等に変更があった場合には、

AbstractTableModelのfire~というメソッドを呼び出すことでJTableに
変更を通知する必要があります。



簡単に見ただけなんで、とりあえず、以上の点だけ指摘しておきます。
    • good
    • 0
この回答へのお礼

補足ありがとうございます。
質問を見てそういう指摘をしてくださるのは当然のことだと思います。内容不足でもうしわけありません。

>getValueAt、getColumnNameでnullを返すケースがありますが、
>これは問題ないでしょうか?確認してたほうがいいかと思います。
>わからなければ、""を返した方が無難です。

ドンピシャでございました(TдT)
勘でなんとなくnullにしてしまっていました。
本当にありがとうございました。これからに自分のプログラミング人生の大きな教訓になりましたm(_ _)m

お礼日時:2014/11/25 21:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!