1

Eclipse で Visual Editor を使用して、2 つの列 (JTableColumn) を持つテーブル (JTable) を含む Swing UI を開始しました。この方法でテーブルにデータを追加します。

final DefaultTableModel model = (DefaultTableModel) this.jTable.getModel();
model.addRow(new Object[] {"Column 1", "Column 2"});

ArrayIndexOutOfBoundsException を生成しました。テーブルをサポートするモデルの列数を設定することでこれを解決しました。

model.setColumnCount(this.jTable.getColumnCount());

しかし、この呼び出しの後、UI エディターを使用して定義したテーブルの列ヘッダーが "A" と "B" に変更されます。今、私が行ったように生成されたコードを修正する必要があるのか​​ 、それともビジュアルエディターでUIを構築するより良い方法があるのか​​ 疑問に思っていますか?

完成させるために、これはテーブルと列を定義するために生成されたコードです。

private JTable getJTable() {
    if (this.jTableSongs == null) {
        final TableColumn tableColumn1 = new TableColumn();
        tableColumn1.setHeaderValue("Header 1");
        final TableColumn tableColumn2 = new TableColumn();
        tableColumn2.setHeaderValue("Header 2");
        this.jTableSongs = new JTable();
        this.jTableSongs.addColumn(tableColumn1);
        this.jTableSongs.addColumn(tableColumn2);
    }
    return this.jTable;
}
4

2 に答える 2

1

この特定の問題 (テーブルの列) についてはわかりませんが、過去に VE で同様の問題がありました。

プロパティ ビューに列数がない場合は、コードを編集してプログラムで指定する必要がありますが、VE は手作業で追加したコードを削除しません。

于 2010-08-25T13:52:34.147 に答える
1

または、Visual Editor を使用して UI を構築するためのより良い方法はありますか?

コード ジェネレーターを使用する際の問題は、Java の学習よりも IDE の学習に多くの時間を費やすことです。より良いアプローチは、デバッグなどに IDE を使用し、GUI を自分で構築して、完全に制御し、コードをある IDE から別の IDE に移動できるようにすることです。

生成されたコードがどのように見えるべきかわかりませんが、以下は矛盾しているように見えます:

this.jTable = new JTable(); 
this.jTableSongs.addColumn(tableColumn1); 
this.jTableSongs.addColumn(tableColumn2); 

jTable 変数が作成されます (メソッドから返されます) が、列は jTableSongs に追加されます。したがって、jTable には 0 列があり、例外が発生する可能性があるように見えます。

于 2010-08-25T17:38:57.813 に答える