【发布时间】:2010-09-22 09:51:34
【问题描述】:
我正在使用 JScrollPane 来允许在具有用作文本编辑器的文本组件的 JFrame 中滚动。在此编辑器中设置文本后,我想做的是让它向上滚动到顶部,这样您就可以看到文件开头的内容。
有人知道怎么做吗?
【问题讨论】:
我正在使用 JScrollPane 来允许在具有用作文本编辑器的文本组件的 JFrame 中滚动。在此编辑器中设置文本后,我想做的是让它向上滚动到顶部,这样您就可以看到文件开头的内容。
有人知道怎么做吗?
【问题讨论】:
使用JComponent.scrollRectToVisible()
如果您需要更多信息,here's an article
【讨论】:
你可以试试这个:
scrollPane.getViewport().setViewPosition(new Point(0,0));
根据 JavaDocs setViewPosition() 的行为如下:
设置显示在视口左上角的视图坐标,如果没有视图,则不执行任何操作。
【讨论】:
在您的文本组件上调用 setCaretPosition(0) 会导致它滚动到顶部。
【讨论】:
以防万一您不使用文本组件,请查看此处发布的线程....Setting Scroll Bar on a JScrollPane
他们的解决方案是通过invokeLater 剥离一个线程
final JScrollPane scroll = new JScrollPane(text);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
scroll.getVerticalScrollBar().setValue(0);
}
});
【讨论】:
invokeLater 不会分离线程,它只是将要在当前事件之后执行的事件排入队列(例如,单击按钮,或者调用invokeLater 的代码的上下文)并且任何其他已经排队的事件完成。
这将使工作:
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
【讨论】:
您可以在文本组件的setText(String t) 之后使用方法setCaretPosition(0)。
【讨论】:
方法如下:
textArea.setSelectionStart(0);
textArea.setSelectionEnd(0);
【讨论】: