gpt4 book ai didi

java - 从另一个窗口刷新 jTable 但另一个窗口正在打开

转载 作者:行者123 更新时间:2023-12-01 09:01:04 26 4
gpt4 key购买 nike

从另一个窗口刷新 jTable!我用不同的类型尝试了很多次,比如调用 fire 方法或再次调用你的模型,一个简单的代码就像这样,将它与布什按钮等事件一起使用:

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();
}

所有这些都刷新了表格..但是问题是它打开了另一个窗口,所以我打开了两个窗口,新的窗口被刷新,旧的则没有..为什么我没有调用它就得到了另一个窗口?

最佳答案

基于不完整数据的猜测。您的问题在这里:

private void btn_add_updtActionPerformed(java.awt.event.ActionEvent evt) {
ItemsForm form = new ItemsForm();

// update form's state here
}

您可能已经存在一个已显示并显示其数据的 ItemsForm 实例。创建新的不会对已显示的产生任何影响。

一个错误的解决方案是提供 ItemsForm 静态字段,以便对一个字段所做的更改显示在另一个字段中。这样做会破坏 OOP 规则,并使您的代码很难测试、升级和增强。

更好的解决方案是确保需要引用 Activity 和显示的 ItemsForm 实例的代码有一个引用,可以直接通过构造函数或 setter/getter 方法调用,或者更好的是通过 M-V-C 程序结构间接调用。

侧面建议:

  • 那些 fire 方法,例如 fireTableDataChanged()fireTableStructureChanged() 应该是模型本身的内部方法 - 只有模型本身应该进行这些调用,并且ActionListener 不应该这样做。
  • 请务必阅读:The Use of Multiple JFrames, Good/Bad Practice?

关于java - 从另一个窗口刷新 jTable 但另一个窗口正在打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41657267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com