11

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(キューの叫び声)が発生します。私は何が間違っているのですか?

4

4 に答える 4

11

私はそれらのクラスをよく知りませんが、ゼロから数える必要があると思います:

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

Javaでは、通常、0から数えます(ほとんどのCのような言語のように)...

于 2012-08-04T21:35:05.260 に答える
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]
于 2012-08-04T21:50:59.597 に答える
1

この答えは少し遅れていることは知っていますが、実際には非常に簡単に解決できる問題です。コードを読み取るためのエントリがテーブル自体にないため、エントリを読み取るときにコードでエラーが発生します。テーブルにデータを入力して、コードを再実行します。問題は以前に解決できた可能性がありますが、投稿したコードからは、テーブル内に何が含まれているかが明確ではありませんでした。

于 2013-10-19T10:01:33.793 に答える
0
       DefaultTableModel model = (DefaultTableModel) table.getModel();

        for (int i = 0; model.getRowCount() > i; i++) {
            final String col1 = (String) model.getValueAt(i, 0);
            final String col2 = (String) model.getValueAt(i, 1);

            System.out.println("Row: " + i + " Col 0: " + col1);
            System.out.println("Row: " + i + " Col 1: " + col2);
        }
于 2020-02-03T10:33:44.167 に答える