Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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
Java JTable在模型更新时不更新_Java_Swing_Jtable_Tablemodel - Fatal编程技术网

Java JTable在模型更新时不更新

Java JTable在模型更新时不更新,java,swing,jtable,tablemodel,Java,Swing,Jtable,Tablemodel,好的,我已经读过了,但是我还是很困惑。我有一个带有自定义表模型的JTable,它将数据存储在ArrayList中。它显示得很好。但是,当我想添加行时,我会向ArrayList添加一个对象,然后调用fireTableRowsInserted。。。。但是,该表不会刷新 public Main() { initComponents(); current_map = new Map(); current_map.authors.add(new Author

好的,我已经读过了,但是我还是很困惑。我有一个带有自定义表模型的JTable,它将数据存储在ArrayList中。它显示得很好。但是,当我想添加行时,我会向ArrayList添加一个对象,然后调用fireTableRowsInserted。。。。但是,该表不会刷新

public Main() {
        initComponents();
        current_map = new Map();
        current_map.authors.add(new Author("New Author"));
        author_model = new AuthorModel(current_map.authors);
        jTable1.setModel(new AuthorModel(current_map.authors)); <---This is the mistake
    }   
...     



    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        author_model.authors.add(new Author("New Author"));
        author_model.fireTableRowsInserted(author_model.authors.size(), author_model.authors.size());
    }
上面的代码来自我的主JFrame。不知道从这里到哪里去


我现在迷路了。

表格初始化为:

jTable1.setModel(new AuthorModel(current_map.authors));
但单击按钮时,您将修改变量author\u模型:

author_model.authors.add(new Author("New Author"));
表的初始化应该是

jTable1.setModel(author_model);

您还应该遵守Java命名约定,为变量选择更好的名称。

该表初始化为:

jTable1.setModel(new AuthorModel(current_map.authors));
但单击按钮时,您将修改变量author\u模型:

author_model.authors.add(new Author("New Author"));
表的初始化应该是

jTable1.setModel(author_model);

您还应该尊重Java命名约定,为变量选择更好的名称。

哦,天啊,我怎么会错过这个呢。我知道名字不好,它们是临时的。author\u model应该是authorModel。当前地图也是如此。变量是用Java封装的。此外,关于临时名称:即使是最简单的项目,也应该始终考虑。一次又一次地,低估被证明是一个问题,例如,创建互联网?谁会需要超过40亿个IP地址?。如果您最终扩展了这个项目,或者只是复制了一些代码用于另一个项目,那么类似的问题将困扰您和其他人。如果它以某种方式进入公共API*发抖*我会回应这一点,而且,为事物命名所付出的努力总是值得的。养成习惯,告诉你的读者你命名的所有东西的真相:变量、类、方法、包。这些名字在短暂的一段时间后继续存在的可能性太大了。此外,对它们的最大需求是在开始时,当您尝试调试类似这样的东西时…注意到。谢谢你的建议。哦,天哪,我怎么错过了那个。我知道名字不好,它们是临时的。author\u model应该是authorModel。当前地图也是如此。变量是用Java封装的。此外,关于临时名称:即使是最简单的项目,也应该始终考虑。一次又一次地,低估被证明是一个问题,例如,创建互联网?谁会需要超过40亿个IP地址?。如果您最终扩展了这个项目,或者只是复制了一些代码用于另一个项目,那么类似的问题将困扰您和其他人。如果它以某种方式进入公共API*发抖*我会回应这一点,而且,为事物命名所付出的努力总是值得的。养成习惯,告诉你的读者你命名的所有东西的真相:变量、类、方法、包。这些名字在短暂的一段时间后继续存在的可能性太大了。此外,对它们的最大需求是在开始时,当您尝试调试类似这样的东西时…注意到。谢谢你的建议。不要直接调用TableModel的fireXXX方法。这些方法只能由TableModel类本身调用。啊,那么更新会自动发生吗?我试试看。不要直接调用TableModel的fireXXX方法。这些方法只能由TableModel类本身调用。啊,那么更新会自动发生吗?我试试看。