繁体   English   中英

更新JTable数据-使用AbstractTableModel

[英]Updating JTable Data — using a AbstractTableModel

我一直在广泛阅读论坛,并尝试了许多方法来解决此问题。

问题:我制作了一个自定义的AbstractTableModel以便可以控制数据的显示方式。 它只是存储在String[][] 它使用JDBC连接到DB,以填充初始数据。 因此,当我的用户(通过Swing GUI)搜索某物时,我在后台简单地构造了一个查询来查询数据库,并返回ResultSet 现在,我想在JTable上显示此新数据。

研究:我读了很多有关侦听器和触发更新的内容。 但是我已经阅读并重读了它们,但仍然没有完全理解它们。 当我为JTable设置新模型时,我实际上是想保留我创建的自定义AbstractTableModel并只是更新数据,这是否可能(也许可以使用AbstractTableModel类中的公共方法创建)?

附加问题:我是否应该使用侦听器来实现此功能? 我是否需要添加侦听器或观察者?

谢谢,我真的很感激! 丰富

研究:我读了很多有关侦听器和触发更新的内容。 但是我已经阅读并重读了它们,但仍然没有完全理解它们。 当我为JTable设置新模型时,我实际上是想保留我创建的自定义AbstractTableModel并只是更新数据,这是否可能(也许可以使用AbstractTableModel类中的公共方法创建)?

是的,有可能。 基本上,您需要...

  1. 在自定义表格模型中提供功能以添加和删除行或
  2. 使用新数据构造自定义表模型的新实例

附加问题:我是否应该使用侦听器来实现此功能? 我是否需要添加侦听器或观察者?

没有上下文很难说。 我会说,通常不会。 在您的情况下,创建SwingWorker ,执行数据库查询并填充新的表模型并从doInBackground方法返回它,或者使用publish / process方法更新现有模型可能更简单。

....所以我可以控制数据的显示方式

模型用于存储数据。 视图(JTable)显示数据。

它只是存储在String [] []中。

无需创建自定义TableModel。 只需使用DefaultTableModel。

我实际上想保留我的自定义AbstractTableModel

使用DefaultTableModel的setDataVector()方法

请参阅“ Get the Code部分中Get the Code 来自数据库的表示例 Get the Code

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM