3

私は数時間検索してきましたが、Javaのテーブルモデルに列/要素を動的に追加するためのきちんとしたクリーンなソリューションを見つけることができませんでした。たぶん私は悪い研究者です、わかりません。それは私を苛立たせました、私は2冊の異なる本を読みました、そして主題に関して全く何も見つけませんでした。私はグーグルの巨大なデータベースを略奪しましたが、何の役にも立ちませんでした。行を追加するためのこれに対するいくつかの「解決策」を見つけましたが、それらはそれほど素晴らしいようには見えません。行と列を動的に挿入できるようにしたい。私は5杯のお茶と私の精神的安定のほとんどをこの解決策を見つけるために投資しましたが、勝利はありませんでした。

私はこのようなことを考えていました:

rageTableModel.addColumn("No need to be upset anymore!");
rageTableModel.addRow("No need to be upset anymore!");

たぶん、私の闘争に対するいくつかのますます単純な解決策があるかもしれませんが、私はそれを自分で見つけることができないようです。私はJava(2〜3か月の経験)にかなり慣れていないので、私の知識がこのテーマについてそれほど広範囲に及ぶわけではありません。どんな助けでもいただければ幸いです。

編集:この「addColumn」メソッドがどこでも使用されているのを確認し、AbstractTableModelのオブジェクトで使用しようとしています。勝利はありません。ドキュメントページにこのメソッドについて言及しているものは何もありません。http://docs.oracle.com/javase/7/docs/api/javax/swing/table/AbstractTableModel.html

4

2 に答える 2

2

次のコードは私にとってはうまくいきます。独自のテーブルモデルを実装している場合は、通知が正しく送信されていない可能性があります。

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class TableTest {

    public static void main(String[] args) throws InterruptedException {
        JFrame f = new JFrame();

        DefaultTableModel m = new DefaultTableModel();
        JTable t = new JTable(m);

        f.add(new JScrollPane(t), BorderLayout.CENTER);
        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        m.addColumn("A");
        m.addRow(new String[]{"A1"});

        Thread.sleep(1000);

        m.addColumn("B");
        m.addRow(new String[]{"A2", "B2"});     
    }
}
于 2012-08-13T18:51:29.660 に答える
0

あなたが何をしようとしているのかわかりませんが、テーブルのモデルを設定する方が常に良いと思います。スプレッドシートなどを作成している場合にのみ、ボタンまたはコンテキストメニューを作成して、新しい列または行を追加できます。つまり、ヘッダーを定義してメソッドを呼び出す必要がありますdefaultTableModel.setColumnIdentifiers(Object[] newIdentifiers)。Shure、newIdentifiersオブジェクト配列は文字列配列です。そうすることで、ユーザーにデータを表示するためにデータの行を追加するだけです。

それが役に立てば幸い!

于 2012-08-13T19:13:55.713 に答える