【发布时间】:2013-06-22 00:05:09
【问题描述】:
我用一个HashMap来填充一个JTable,它或多或少是不断更新的:
public Map tableData = new HashMap();
每次向地图添加新元素时,都会通知表格模型:
tableData.put(id, anObject);
AbstractTableModel atm = (AbstractTableModel)model;
atm.fireTableDataChanged();
此外,我还有一个 TableRowSorter,它根据特定条件对行进行排序:
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
.
.
.
table.setRowSorter(sorter);
我的目标是(垂直)滚动条总是跳到最后添加的行,可以在中间的某个地方 因为分拣机可能使用了这个:
table.scrollRectToVisible(table.getCellRect(row,0, true));
问题是我不知道该行的索引 :) 我在哪里可以挂钩来获取这个索引?
【问题讨论】:
-
不相关:a) 永远不会代表模型触发事件,而是通过修改 api 来实现自定义模型,从而实现其通知合同本身 b) 始终触发可能的最窄事件,菲更新/插入(与 shotgun dataChanged 相比)c)如果您的 rowSorter 只是普通核心版本,请考虑使用 table.setAutoCreateRowSorter(true) 而不是手动创建和设置它