Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您是否必须更改EclipseVE生成的Java Swing代码以获得正确的程序?_Java_Eclipse_Swing_Visual Editor - Fatal编程技术网

您是否必须更改EclipseVE生成的Java Swing代码以获得正确的程序?

您是否必须更改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。我通过设置

使用Eclipse中的可视化编辑器,我启动了一个Swing UI,其中包含一个表(JTable)和两列(JTableColumn)。通过以下方式向表中添加数据:

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。