您是否必须更改EclipseVE生成的Java Swing代码以获得正确的程序?
使用Eclipse中的可视化编辑器,我启动了一个Swing UI,其中包含一个表(JTable)和两列(JTableColumn)。通过以下方式向表中添加数据:您是否必须更改EclipseVE生成的Java Swing代码以获得正确的程序?,java,eclipse,swing,visual-editor,Java,Eclipse,Swing,Visual Editor,使用Eclipse中的可视化编辑器,我启动了一个Swing UI,其中包含一个表(JTable)和两列(JTableColumn)。通过以下方式向表中添加数据: final DefaultTableModel model = (DefaultTableModel) this.jTable.getModel(); model.addRow(new Object[] {"Column 1", "Column 2"}); 生成了ArrayIndexOutOfBoundsException。我通过设置
final DefaultTableModel model = (DefaultTableModel) this.jTable.getModel();
model.addRow(new Object[] {"Column 1", "Column 2"});
生成了ArrayIndexOutOfBoundsException。我通过设置支持表的模型的列数来解决这个问题:
model.setColumnCount(this.jTable.getColumnCount());
但是在这个调用之后,我使用UI编辑器定义的表的列标题被更改为“A”和“B”。现在我想知道我是否应该像以前那样继续修改生成的代码,或者是否有更好的方法使用VisualEditor构建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;
}
我不知道这个具体的问题(表列),但在过去我在VE上也遇到过类似的问题 如果属性视图中没有列数,则必须以编程方式指定它,编辑代码,但VE不会删除手动添加的代码 还是有更好的方法来构建用户界面 使用可视化编辑器 使用代码生成器的问题在于,您花费更多的时间学习IDE,而不是学习Java。更好的方法是使用IDE进行调试等,并自行构建GUI,这样您就可以完全控制并将代码从一个IDE移动到另一个IDE 我不知道生成的代码应该是什么样子,但以下内容看起来不一致:
this.jTable = new JTable();
this.jTableSongs.addColumn(tableColumn1);
this.jTableSongs.addColumn(tableColumn2);
创建了一个jTable变量(并从方法返回),但将列添加到jTableSongs中。所以在我看来,jTable有0列,这可能会导致异常。为什么不试试NetBeans Matisse visual Swing builder?甚至有一个页面解释了如何与Eclipse并行使用它:我已经使用并了解Eclipse,所以这对我来说更容易,但我简单地尝试了NetBeans。org.jdesktop或Netbeans平台的额外复杂性似乎太大了,不值得学习。使用NetBeans GUI编辑器在没有错误的情况下重建表。美好的我尝试了更多的Netbeans GUI构建器,但我发现它有限。可视化和属性编辑器没有涵盖GUI元素的所有细节,因此您必须很快自己编写代码中的部分。这不是我对GUI构建器的期望,我不认为GUI构建器是一个代码生成器。我希望它能取代编码,这样我就可以专注于创建布局并将其连接到后端。代码中的错误是文章中的一个打字错误,已被更正。在类中,名称都是JTableSong。