我一直在广泛阅读论坛,并尝试了很多方法来解决这个问题。
问题:
我制作了自定义AbstractTableModel
,因此我可以控制数据的显示方式。它只是存储在String[][]
中。它使用JDBC
连接到数据库以填充初始数据。因此,当我的用户(通过Swing
GUI)搜索某个内容时,我只是构建一个查询来查询数据库并返回ResultSet
。现在,我想在JTable
上显示这个新数据。
研究:
我阅读了很多关于听众和解雇更新和事情的内容。但我已经阅读并重读了它们,但仍然没有完全理解它们。当我将新模型设置为JTable
时,我实际上想要保留我创建的自定义AbstractTableModel
并只更新数据,这是否可行(可能使用AbstractTableModel
类中的公共方法我可以创建)?
其他问题:我是否应该使用侦听器来实现此功能?我是否需要添加监听器或观察者?
谢谢,我真的很感激! 富
答案 0 :(得分:1)
研究:我读了很多关于听众和解雇更新的事情。 但是我已经阅读并重读了它们,但仍然没有完全理解 他们。当我为JTable设置一个新模型时,我实际上想要保持我的 自定义AbstractTableModel我创建并只更新数据,就是这样 可能(可能使用AbstractTableModel类中的公共方法 我能创造出来吗?
是的,这是可能的。基本上,你需要......
其他问题:我应该使用听众吗? 功能?我是否需要添加监听器或观察者?
没有上下文就很难说。我会说,一般不会。在您的情况下,创建SwingWorker
可能更简单,执行数据库查询并填充新的表模型并从doInBackground
方法返回它或使用publish
/ {{1}更新现有模型的方法。
答案 1 :(得分:0)
....所以我可以控制我的数据显示方式
模型用于存储数据。视图(JTable)显示数据。
它只是存储在String [] []中。
无需创建自定义TableModel。只需使用DefaultTableModel。
我实际上想要保留我的自定义AbstractTableModel
使用DefaultTableModel的setDataVector()
方法
请参阅Get the Code
部分中的Table From Database Example。