JavaSwing-使用JScrollPane并使其滚动回顶部

JavaSwing-使用JScrollPane并使其滚动回顶部,java,swing,Java,Swing,我使用JScrollPane允许在JFrame中滚动,JFrame有一个充当文本编辑器的文本组件。在这个编辑器中设置文本后,我想做的是让它向上滚动到顶部,这样您就可以看到文件开头的内容 有人知道怎么做吗?使用 如果您需要更多信息,可以尝试以下方法: scrollPane.getViewport().setViewPosition(new Point(0,0)); 根据JavaDocs setViewPosition()的行为如下: 设置显示在视口左上角的视图坐标,如果没有视图,则不执行任何操

我使用JScrollPane允许在JFrame中滚动,JFrame有一个充当文本编辑器的文本组件。在这个编辑器中设置文本后,我想做的是让它向上滚动到顶部,这样您就可以看到文件开头的内容

有人知道怎么做吗?

使用

如果您需要更多信息,可以尝试以下方法:

 scrollPane.getViewport().setViewPosition(new Point(0,0));
根据JavaDocs setViewPosition()的行为如下:

设置显示在视口左上角的视图坐标,如果没有视图,则不执行任何操作


调用您的文本组件将导致它滚动到顶部。

如果您没有使用文本组件,请查看此处发布的线程

他们的解决方案是通过invokeLater派生线程

final JScrollPane scroll = new JScrollPane(text);
javax.swing.SwingUtilities.invokeLater(new Runnable() {
   public void run() { 
       scroll.getVerticalScrollBar().setValue(0);
   }
});

这将使工作:

DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);

您可以在文本组件的
setText(String t)
之后使用方法
setCaretPosition(0)

如下所示:

textArea.setSelectionStart(0);
textArea.setSelectionEnd(0); 

这对我不起作用-滚动窗格跳到顶部,然后立即又下降到底部。它对我起作用了“\_(ツ)_/“'我的JScrollPane中有一个JTable。@jwoolard是的,这里提供的解决方案在我遇到的许多情况下都不起作用。但是,请注意我今天上午提出的解决方案。你是对的,问题是插入符号位于文本组件的末尾。在文本编辑器上调用“setText(…)”后,它也会起作用。”。(使用JScrollPane中的一个JEditorPane实例作为文本面板进行测试。)@Craig早期答案的副本。这是与我的问题最接近的答案。但是,如果JScrollPane中有面板,如何使用此方法?
invokeLater
没有派生线程,它只是将一个事件排队,在当前事件之后执行(例如,单击按钮或调用调用调用器的代码上下文)和任何其他已排队事件完成。