首页  >  文章  >  Java  >  为什么我的 GUI 显示不一致?删除后如何更新表?

为什么我的 GUI 显示不一致?删除后如何更新表?

DDD
DDD原创
2024-11-12 10:33:01364浏览

Why is My GUI Display Inconsistent and How Can I Update the Table After Deletion?

AbstractTableModel GUI 显示问题

在提供的使用 AbstractTableModel 创建 GUI 的 Java 代码中,存在一些与显示和显示相关的问题第二个 GUI 窗口(Gui2 类)的功能。

第一个问题:GUI 外观不一致

您提到 Gui2 窗口以两种不同的方式显示,一种带有空面板和另一个带有表格和按钮的面板。这种不一致的行为通常是由于 GUI 组件的初始化或显示不正确造成的。

在 Gui2 类的构造函数中,创建了面板,并定义了布局和约束,但组件(文本字段、按钮和表格)未添加到面板中。要解决此问题,您需要使用 add() 方法或调用每种组件类型的特定方法将组件添加到面板。

第二个问题:删除后表更新

“删除选定行”按钮的 ActionListener 会触发删除查询并显示成功消息,但表不会自动更新以反映删除。这个问题与表模型的更新方式有关。

当您从数据库中删除一行时,您需要更新底层表模型以从数据结构中删除删除的行。 AbstractTableModel 专门为此目的提供了一个名为 fireTableRowsDeleted() 的方法。

要解决此问题,您应该在删除按钮的 ActionListener 中成功删除后添加一行来调用 fireTableRowsDeleted()。这将通知 JTable 数据已更改,并将相应地更新显示。

其他注意事项:

  • SwingWorker 类用于检索后台从 ResultSet 获取行,优化大数据集的显示。
  • 嵌套在 JDBCModel 中的 JDBCWorker 类,处理 SwingWorker 中的行并使用publish() 和 process() 方法更新表模型.
  • 使用 ResultSetMetaData 提取行元数据以确定列数和列名称。
  • 重写 getPreferredScrollableViewportSize() 方法以自定义封闭的 JScrollPane 的大小。
  • SwingWorker的progress属性用于显示数据检索过程中的进度。

以上是为什么我的 GUI 显示不一致?删除后如何更新表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn