我一直在广泛阅读论坛,并尝试了许多如何解决这个问题的方法。
问题:,我做了一个定制的AbstractTableModel,这样我就可以控制数据的显示方式。它只是简单地存储在String[][]中。它使用JDBC连接到DB以填充初始数据。因此,当我的用户(通过Swing图形用户界面)搜索某个东西时,在幕后,我只需构造一个查询来查询DB,它就会返回一个ResultSet。现在,我想在JTable上显示这些新数据。
研究:,我读了很多关于听众和触发更新等等的文章。但我读了又读了,但仍然不完全理解它们。当我为JTable设置一个新模型时,我实际上希望保留我创建的自定义AbstractTableModel并只更新数据,这是可能的(可能在我可以创建的AbstractTableModel类中的公共方法中)吗?
附加问题:是否应该使用侦听器来实现此功能?我需要添加侦听器还是观察者?
谢谢,我真的很感激!富足
发布于 2013-07-12 05:29:05
研究:我读了很多关于听众和激发更新和其他事情的文章。但我读了又读了,但仍然不完全理解它们。当我为JTable设置一个新模型时,我实际上希望保留我创建的自定义AbstractTableModel并只更新数据,这是可能的(可能在我可以创建的AbstractTableModel类中的公共方法中)吗?
是的有可能。基本上你需要..。
其他问题:我是否应该使用侦听器来实现此功能?我需要添加侦听器还是观察者?
没有上下文是很难说的。我会说,一般不会。在您的示例中,创建一个SwingWorker、执行数据库查询和填充一个新的表模型并从doInBackground方法返回它或者使用publish/process方法更新现有的模型可能更简单。
发布于 2013-07-12 15:15:36
....so我可以控制数据的显示方式
使用一个模型来存储数据。视图(JTable)显示数据。
它只是存储在一个字符串中。
不需要创建自定义TableModel。只需使用DefaultTableModel即可。
实际上我想保留我的定制AbstractTableModel
使用setDataVector()方法的DefaultTableModel
请参阅数据库示例中的表中的Get the Code部分。
https://stackoverflow.com/questions/17604183
复制相似问题