从另一个窗口刷新jTable! 我尝试了很多次使用不同的类型,比如调用fire方法或再次调用你的模型,一个简单的代码将像这样使用它像一个bush按钮这样的事件:
private void btn_add_updtActionPerformed(java.awt.event.ActionEvent evt) {
ItemsForm form = new ItemsForm();
//this:
form.mymodel();
//or this:
form.model.fireTableDataChanged();
//or this:
form.model.fireTableStructureChanged();
}
所有这些刷新了表..但问题是它打开另一个窗口,所以我有两个窗口打开新的一个是刷新旧的不是..为什么我有另一个窗口没有调用它?
答案 0 :(得分:1)
基于不完整数据的猜测。你的问题在这里:
private void btn_add_updtActionPerformed(java.awt.event.ActionEvent evt) {
ItemsForm form = new ItemsForm();
// update form's state here
}
您可能已经存在已经显示并显示其数据的ItemsForm实例。创建一个新的对已经显示的那个没有影响。
错误的解决方案是给ItemsForm静态字段,以便对另一个进行更改。这样做会破坏OOP规则,使您的代码很难进行测试,升级和增强。
更好的解决方案是确保需要引用活动和显示的ItemsForm实例的代码有一个,可以直接通过构造函数或setter / getter方法调用,或者更好,间接通过M-V-C程序结构。
侧面建议:
fireTableDataChanged()
和fireTableStructureChanged()
应该是模型本身的内部 - 只有模型本身应该进行这些调用,而ActionListener不应该这样做。