更新JTable数据 - 使用AbstractTableModel

时间:2013-07-11 21:54:51

标签: java swing jtable listener abstracttablemodel

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

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

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

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

谢谢,我真的很感激! 富

2 个答案:

答案 0 :(得分:1)

  

研究:我读了很多关于听众和解雇更新的事情。   但是我已经阅读并重读了它们,但仍然没有完全理解   他们。当我为JTable设置一个新模型时,我实际上想要保持我的   自定义AbstractTableModel我创建并只更新数据,就是这样   可能(可能使用AbstractTableModel类中的公共方法   我能创造出来吗?

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

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

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

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

答案 1 :(得分:0)

  

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

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

  

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

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

  

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

使用DefaultTableModel的setDataVector()方法

请参阅Get the Code部分中的Table From Database Example