1

使用 Eclipse 中的可视化编辑器,我启动了一个 Swing UI,其中包含一个具有 2 列 (JTableColumn) 的表 (JTable)。以这种方式将数据添加到表中:

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

还是有更好的方法来使用可视化编辑器构建 UI?

使用代码生成器的问题在于您花更多时间学习 IDE 而不是学习 Java。更好的方法是使用 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 回答
1

我不知道这个具体问题(表格列),但过去我在 VE 上遇到过类似的问题。

如果属性视图中没有列数,则必须以编程方式指定它,编辑代码,但 VE 不会删除手动添加的代码。

于 2010-08-25T13:52:34.147 回答