我使用HashMap来填充一个或多或少不断更新的JTable:
公共地图< Long,MyObject> tableData = new HashMap< Long,MyObject>();
每次向地图添加新元素时,都会通知表模型:
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));
问题是我不知道行的索引:)我可以在哪里获取此索引?
答案 0 :(得分:8)
滚动到可能已排序的表中新插入的行涉及
在代码中:
final JTable table = new JTable();
TableModelListener l = new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
if (TableUtilities.isInsert(e)) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
int viewRow = table.convertRowIndexToView(e.getFirstRow());
table.scrollRectToVisible(table.getCellRect(viewRow, 0, true));
}
});
}
}
};
table.getModel().addTableModelListener(l);
两个重要方面: