0

我已经扩展了 AbstractTableModel 以满足我的要求。现在可以通过我的 GUI 的其他方法更改此表。我希望表格滚动到当前编辑的单元格进入视图。为此,我想我必须首先获取当前 JComponent 的 JViewport,但我没有看到可以实现此目的的方法?我如何实现这一目标?

当我使用默认的 JTable 时,我已经这样做了,但是当我们扩展 AbstractTableModel 时,我该怎么做呢?

4

2 回答 2

1

模型旨在存储数据并在数据更改时通知视图。它通过触发事件来通知视图数据的变化。监听这些事件是视图的责任。因此,模型永远不会直接知道正在更新什么视图。这种类型的功能不应该是模型的一部分。

一种方法可能是使用 TableModelListener。您可以创建一个以表为参数的 TableModelListner。然后,当数据更改时,将通知侦听器。然后,您可以在表上调用 table.scrollRectToVisible(...)。但是,使用这种方法,您无法区分直接通过 TableModel 应用的编辑与通过 JTable 本身完成的更新。

于 2010-12-28T21:34:19.310 回答
0

你可能想让你的表触发一个事件,让你的父组件监听那个事件,并相应地滚动。这样你的表格就不需要知道它的父滚动窗格。

您可以使用 DefaultTableModel 中的 EventListenerList 来通知任何侦听器。

于 2010-12-28T19:22:53.733 回答