2012-08-04 4 views
5

OK、JTableの最初の列からすべてのデータを取得します。私は最も良い方法はArrayListにそれを引き込むだろうが、私は1つを作った。JTableからデータを取得するには?

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が(キュー悲鳴)を与える:私はまたTableModelのインスタンスを作りました。何が間違っているのですか?

+0

'static DefaultTableModel model'' static'キーワードを削除します。あなたがそれを使って解決しようとしていたものは、他の方法で解決される可能性が最も高いです。 –

+0

nullポインタがスローされると、例外がスローされた行番号を正確に表示します。 nullポインタ例外をスローする行を示すコードにコメントを追加してください。 (ある時点でコードに戻る必要があります - スタックトレースの最初のものではないかもしれません) –

答えて

7

私は同様にそれらのクラスを知らないが、私はあなたがゼロからカウントする必要がありますよね:Javaでは

for (int count = 0; count < model.getRowCount(); count++){ 
    numdata.add(model.getValueAt(count, 0).toString()); 
} 

を、0からカウントするのが一般的である(ほとんどのCのようなのように言語)...

+0

0行目がないのでNullPointerを返します – Primm

+0

本当に1から数えられますか?うーん...そして、列1はありますか? –

+0

実際には2列 – Primm

2

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] 
1

私はこの答えは少し遅れている知っているが、それは実際には非常に簡単な問題です解決する。読み込むコードのエントリ自体がテーブルにないため、コードを入力するとエラーが発生します。テーブルにデータを入力してコードを再実行します。問題は以前に解決されていたかもしれませんが、投稿したコードからはテーブルの中に何が入っているのかは分かりませんでした。

関連する問題