gpt4 book ai didi

java - JScrollPane 获取/设置值

转载 作者:行者123 更新时间:2023-12-01 04:30:33 24 4
gpt4 key购买 nike

我正在使用滚动 Pane 中包含的表格进行一些工作。我调用的函数对表格进行操作,然后重新绘制表格,这会更改垂直滚动条的位置。我试图找出一种方法来在函数执行后恢复滚动条的初始位置。这是我迄今为止所拥有的示例:

    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),它每次都会工作。

其他信息:我尝试过使用获取/设置视口(viewport)的类似代码,并得到了类似的结果。此外,根据行中值的类型(矩阵与常量),某些行具有不同的高度。

感谢您的帮助

最佳答案

要滚动回顶部,这不会执行任何操作:

JscrollPane.getVerticalScrollBar.setValue()

您必须使用:

TextComponent.setCaretPosition()

而不是:

JTable.scrollRectToVisible()

关于java - JScrollPane 获取/设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18016143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com