2012-08-04 28 views
5

Tamam, JTable'ın ilk sütunundaki tüm verileri almak istiyorum. En iyi yol ArrayList'a çekiyor olsa da, bir tane yaptım.JTable'dan veri nasıl alınır?

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); 
} 

Bu bana bir NullPointerException (işaret çığlıklar) verir: Ben de TableModel bir örneğini yaptı. Neyi yanlış yapıyorum?

+0

'statik DefaultTableModel model' Statik anahtar sözcüğünü kaldırın. Bunu kullanarak çözmeye çalıştığınız her neyse, muhtemelen başka bir şekilde daha iyi çözüldü. –

+0

Boş bir işaretçi atıldığında, istisnanın hangi satır numarasının atıldığını tam olarak söyleyecektir. Lütfen null pointer istisnasını atanan satırı belirten kodunuza bir yorum ekleyebilir misiniz? (Bir noktada kodunuza geri gelmek zorundadır - yığın izinde ilk olan olmayabilir) –

cevap

7

Ben de bu sınıfları bilmiyorum ama sıfırdan saymak gerekecek tahmin ediyorum: Java'da

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

, en C- benzeri gibi 0 (dan saymak olağandır diller) ...

+0

bir NullPointer verir, çünkü 0 satır yok – Primm

+0

Gerçekten de 1 sayılır mı? Hmm ... Ve bir sütun 1 var mı? –

+0

2 sütun aslında – Primm

2

Model başlatmayı ve veriye sahip nüfusu gösteren SSCCE'u gönderebilmeniz en iyisidir. Ayrıca, sorun için birden çok kaynak olabileceğinden ayrıcalık ayrıntılarını da ekleyin.

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); 
    } 
} 

sonucudur: Burada

@CedricReichenbach düzeltme dayalı bir demo olan bu cevap biraz geç

[1, 2] 
1

Biliyorum, ama aslında çok kolay bir sorundur çözmek. Kodunuz okunurken okunan bir kod olduğundan, kodunuz okunurken bir hata verir. Tabloyu doldurun ve kodunuzu tekrar çalıştırın. Sorun daha önce çözülmüş olabilirdi, ancak yazdığınız koddan tablonun içinde ne olduğu belli değildi.

İlgili konular