我在JScrollPanel中添加了JTable,当我拖动滚动条后修改单元格中数据,滚动条就好回滚顶部,我得重新拉滚动条到之前的位置,如何实现table刷新或者JScrollPanel刷新后滚动条位置不会滚到顶部
可以通过记录滚动条位置并在刷新后将滚动条重新设置到之前的位置来解决这个问题。具体实现可以参考以下步骤:
JViewport viewport = scrollPane.getViewport();
int firstRow = table.rowAtPoint(viewport.getViewPosition());
int lastRow = table.rowAtPoint(new Point(viewport.getViewPosition().x, viewport.getViewPosition().y + viewport.getExtentSize().height - 1));
int scrollTop = scrollPane.getViewport().getViewPosition().y;
String[] columnNames = new String[table.getColumnCount()];
for (int i = 0; i < columnNames.length; i++) {
columnNames[i] = table.getColumnName(i);
}
// 修改表格数据的代码
table.setModel(new DefaultTableModel(data, columnNames));
table.setModel(new DefaultTableModel(data, columnNames));
scrollPane.getViewport().setViewPosition(new Point(0, scrollTop));
这样就可以实现在JScrollPanel中添加JTable后,修改单元格中数据不会回滚到顶部的功能了。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!