JTable,TableModel& amp;资料表

时间:2009-02-18 14:21:26

标签: java swing jtable

JTableTableModelTableData之间的关系是什么?如果我只是修改TableData,这是否也会更改JTable组件上的数据显示,或者我必须调用某种方法来同步这两者。我查看了this,但没有明确说明或向我展示更新方面的关系

3 个答案:

答案 0 :(得分:5)

更改TableModel数据中的值时,必须触发此事件。例如。更改一个单元格的值,请调用fireTableCellUpdated(row, col);

更具体地看this

答案 1 :(得分:2)

我认为您使用短语“TableData”只是表示JTable中显示的数据。要回答您的问题,您是否看到自动更新取决于您的TableModel以及它与您的数据的交互方式。

当底层数据模型发生更改时,TableModel应该触发事件,这反过来会通知JTable发生了更改并且应该重新绘制。因此,就关系而言,JTable会监听TableModel上的事件更改; TableModel不了解JTable。

根据模型的组织方式,下面的数据可能会在没有TableModel知道的情况下发生变化。在这种情况下,如果您从TableModel直接传递到数据,屏幕上的值将在重新绘制自然发生时更改(屏幕调整大小,鼠标移动等),但是您要强制执行事件您应该获得TableModel通过上述事件通知JTable。就关系而言,TableModel知道表数据,但表数据不知道模型(通常)。 TableModel可能会也可能不会监听数据以进行更改。

答案 2 :(得分:2)

在JTable中设置TableModel时,该表会添加一个观察者(TableModelListener)以获知模型中的更改。

在更改模型中的数据时,模型应通过触发TableModelEvent来通知已注册的侦听器。事件本身可以包含有关更改粒度的补充信息(结构是否显着更改,或仅更改某些单元格数据)以允许JTable执行优化的视图更新。