我正在对包含在滚动窗格中的表做一些工作。我正在调用的函数对表格进行操作,然后重新绘制表格,这会改变垂直滚动条的位置。我试图找出一种方法来在函数之后恢复滚动条的初始位置。这是我到目前为止的示例:
public void lineCopy(){
scrollPosition = jScrollPane1.getVerticalScrollBar().getValue;
//Main body of tableCopy function here, including call to
//getNewTable() which gets the new table
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
jScrollPane1.getVerticalScrollBar().setValue(scrollPosition);
System.out.println("Run Later Here");
}
});
System.out.println("End of copy function");
}
问题是滚动条不会重置为函数之前的值,它通常会比以前更向下滚动窗口(例如,如果第 200 行在函数之前位于窗口顶部,则第 250 行在后置顶)。
这是我所知道的:invokeLater 确实在稍后根据我添加的系统输出行调用。我也知道 setValue 函数正在工作,因为如果我将它设置为 setValue(0) 而不是 setValue(scrollPosition),它每次都有效。
其他信息:我使用获取/设置视口尝试了类似的代码,并得到了类似的结果。此外,根据行中值的类型(矩阵与常量),某些行具有不同的高度。
谢谢您的帮助