3

私は約 3 日間、JTable を埋めようとしてきました。ベクトルのベクトルに「Artikel」オブジェクトを入力し、ヘッダー ベクトルを入力して、これら 2 つのベクトルを JTable にバインドするだけです。

カスタム AbstractTableModel を使用してこれを管理できましたが、addColumn() メソッドを作成できませんでした。というわけで、この方法であきらめました。今は標準の DefaultTableModel を使用していますが、JTable を正しく埋めることができません。すべての列に分割するのではなく、最初の列にすべてのオブジェクトを取得します: 障害のスクリーンショット

GUI

私の Artikel クラス:

public class Artikel {

private String EnitiativeRef;
private String Brand;
private String pnb;
.
.
.
public Artikel(){        
}

public String getEnitiativeRef() {
    return EnitiativeRef;
}

public void setEnitiativeRef(String EnitiativeRef) {
    this.EnitiativeRef = EnitiativeRef;
}
.
.
.
}

私のボタンコード:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    ICsvBeanReader inFile = null;
    String[] header = {};
    Vector<Vector<Artikel>> data = null;

    try {
        inFile = new CsvBeanReader(new FileReader("C:\\609661920071022111.csv"), CsvPreference.STANDARD_PREFERENCE);

        header = inFile.getHeader(true);

        data = new Vector<Vector<Artikel>>();

        Artikel artikel;
        while ((artikel = inFile.read(Artikel.class, header, cellProcessor)) != null) {
            Vector<Artikel> tmpVector = new Vector<Artikel>();
            tmpVector.addElement(artikel);
            data.addElement(tmpVector);
        }

    } catch (Exception ex) {
        System.out.println("FOUT: " + ex.toString());
    } finally {
        try {
            inFile.close();
        } catch (IOException ex) {
            Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    tblAll.setModel(new DefaultTableModel(data, new Vector(Arrays.asList(header))));
    tblAll.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}

私が間違っていることを教えてもらえますか、またはこれを行う正しい方法に私を導くことができますか? 感謝の気持ちを込めてお手伝いさせていただきます。

4

1 に答える 1

1

ベクトルのベクトルの各要素は行を表し、これらの要素ベクトルの各要素は列を表します。

メイン ベクトルに 1 要素ベクトルを追加しようとしており、その要素は、toStringメソッドを実装していないクラスのオブジェクトです。

あなたはおそらく間違った方向に進んでいます。

于 2012-11-11T23:44:50.037 に答える