我使用 JScrollPane 允许在具有充当文本编辑器的文本组件的 JFrame 中滚动。 在此编辑器中设置文本后,我想做的就是让它滚动回到顶部,这样您就可以看到文件开头的内容。
有人知道该怎么做吗?
在文本组件上调用 setCaretPosition(0) 将导致其滚动到顶部。
以防万一您不使用文本组件,请查看此处发布的线程... 在 JScrollPane 上设置滚动条
他们的解决方案是通过invokeLater 分离一个线程
final JScrollPane scroll = new JScrollPane(text);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
scroll.getVerticalScrollBar().setValue(0);
}
});
你可以试试这个:
scrollPane.getViewport().setViewPosition(new Point(0,0));
根据 JavaDocs setViewPosition() 的行为如下:
设置出现在视口左上角的视图坐标,如果没有视图则不执行任何操作。
这将使工作:
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
您可以在文本组件的
setCaretPosition(0)
之后使用方法 setText(String t)
。
使用 JComponent.scrollRectToVisible()
如果您需要更多信息,这里有一篇文章(WayBack Machine 链接——原始文章似乎已经消失)
具体方法如下:
textArea.setSelectionStart(0);
textArea.setSelectionEnd(0);