1

ボタンが追加されたときに JTextFieldaからaにデータを取得しようとしていますJTable

ActionListener:

public void actionPerformed(ActionEvent evt) {
    Object src = evt.getSource();
    if (src == AddBtn) {
        System.out.println("HELLOO");
        String nextRowId = Integer.toString(model.getRowCount());
        model.addRow(new Object[] { nextRowId, LatText.getText(),
                LongText.getText(), EvlText.getText() });

    } else if (src == NextBtn) {

    } else if (src == perviousBtn) {

    }
}

J テーブル:

String columns[] = { "ID", "Name", "Age", "Gender" };
Object data[][] = { { "0", "Tom", new Integer(20), "Male" },
        { "1", "Tina", new Integer(18), "Female" },
        { "2", "Raj", new Integer(19), "Male" },
        { "3", "Tina", new Integer(18), "Female" },
        { "4", "Raj", new Integer(19), "Male" },
        { "5", "Tina", new Integer(18), "Female" }

};
DefaultTableModel model = new DefaultTableModel(data, columns);

完全なコード: http://pastebin.com/9R9QyXdw ?

[追加] をクリックしても何も起こりません。

編集

これを次のように修正しました。

 JTable dataTable = new JTable(model); 

それでもデータは追加されません。ありがとうございました。

4

4 に答える 4

2

TableModel何も起こらないのは、どの にも設定されていないを更新したためですJTable

あなたが使う

JTable table = new JTable(data, columns);

代わりに、テーブルを構築する

JTable table = new JTable( model );
于 2012-10-15T16:18:59.720 に答える
1

私はあなたのコードをテストしていませんが、JTable(ペーストビンのリンクから読み取ったように) あなたのコードを作成するときは、次の行を使用します:

JTable table = new JTable(data, columns);

生データの代わりにモデルを指定する必要があります。モデルに加えられた変更がテーブルに表示されます。

JTable table = new JTable (model);

于 2012-10-15T16:18:26.683 に答える
1

コードには 2 つの問題があります。

最初はすでに指摘されているJTable table = new JTable(data, columns)ように、基本的に独自のモデルを構築しているため、アクションリスナーにモデルを追加しようとすると、テーブルで使用されているモデルとは異なります。

もう 1 つは、モデルを 2 回宣言することです。

モデルをクラス グローバル フィールドとして宣言し、メソッドDefaultTableModel model = new DefaultTableModel(data, columns)で再度宣言しますaddComponents...

    public void addComponentsToPane(final Container pane) {
            DefaultTableModel model = new DefaultTableModel(data, columns);

したがって、テーブルを宣言したとしてJTable table = new JTable(model)も、間違ったモデルを使用していることになります..

DefaultTableModel説明に従ってテーブルの宣言を変更し、メソッド内のモデルの宣言を削除すると、addComponentsToPane正常に動作するはずです...

于 2012-10-15T19:50:58.893 に答える
0

あなたのコードを見ると、テーブルに更新している TableModel を使用していません。

データの変更について JTable に通知する場合は、tableModel.fireTableDataChanged() を使用します。

http://docs.oracle.com/javase/7/docs/api/javax/swing/table/AbstractTableModel.html#fireTableDataChanged%28%29を参照してください。

ここで更新しました。今すぐチェックしてください http://pastebin.com/bb00PzjD

于 2012-10-15T16:34:06.200 に答える