OK、JTableの最初の列からすべてのデータを取得したいと思います。最善の方法はそれをArrayList
に取り込むことですが、私はそれを作成しました。 TableModel
のインスタンスも作成しました:
static DefaultTableModel model = new javax.swing.table.DefaultTableModel();
f.data.setModel(model); //f.data is the JTable
public static final void CalculateTotal(){
ArrayList<String> numdata = new ArrayList<String>();
for(int count = 1; count <= model.getRowCount(); count++){
numdata.add(model.getValueAt(count, 1).toString());
}
System.out.println(numdata);
}
これにより、NullPointerException(キューの悲鳴)が発生します。私は何が間違っているのですか?
私はそれらのクラスをよく知りませんが、ゼロから数える必要があると思います:
for (int count = 0; count < model.getRowCount(); count++){
numdata.add(model.getValueAt(count, 0).toString());
}
Javaでは、通常、0から数えます(ほとんどのCのような言語のように)...
モデルの初期化とそのデータの母集団を示す [〜#〜] sscce [〜#〜] を投稿できれば最高です。問題の原因が複数ある可能性があるため、例外の詳細も含めてください。
これは@CedricReichenbach修正に基づくデモです:
import Java.util.ArrayList;
import Java.util.List;
import javax.swing.table.DefaultTableModel;
public class TestModel {
public static void main(String s[]) {
DefaultTableModel model = new javax.swing.table.DefaultTableModel();
model.addColumn("Col1");
model.addColumn("Col2");
model.addRow(new Object[]{"1", "v2"});
model.addRow(new Object[]{"2", "v2"});
List<String> numdata = new ArrayList<String>();
for (int count = 0; count < model.getRowCount(); count++){
numdata.add(model.getValueAt(count, 0).toString());
}
System.out.println(numdata);
}
}
結果は次のとおりです。
[1, 2]
この答えは少し遅れていることは知っていますが、実際には非常に簡単に解決できる問題です。テーブル自体にコードが読み取るエントリがないため、エントリを読み取るときにコードでエラーが発生します。テーブルにデータを入力して、コードを再実行します。この問題は以前に解決できた可能性がありますが、投稿したコードからは、テーブルの内容が明確ではありませんでした。