0

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

问题: 我做了一个自定义AbstractTableModel,所以我可以控制我的数据的显示方式。它只是存储在一个String[][]. 它连接到JDBC用于填充初始数据的数据库。因此,当我的用户(通过SwingGUI)搜索某物时,在幕后我只需构造一个查询来查询数据库,它会返回一个ResultSet. 现在,我想在JTable.

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

其他问题:我应该为此功能使用侦听器吗?我需要添加听众或观察者吗?

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

4

2 回答 2

1

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

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

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

其他问题:我应该为此功能使用侦听器吗?我需要添加听众或观察者吗?

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

于 2013-07-12T05:29:05.240 回答
0

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

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

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

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

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

使用setDataVector()DefaultTableModel 的方法

请参阅本节中的数据库示例中的表Get the Code

于 2013-07-12T15:15:36.973 回答