java - JEdi​​torPane 中 JScrollPane 长文本向下滚动

标签 java multithreading swing

我想在 JScrollPane 中有一个 JEditorPane。当用户点击按钮时,点击监听器会创建一个textEditor,调用jscrollpane.setViewPort(textEditor),调用textEditor.setText(String)填充可编辑文本,调用jscrollpane.getVerticalScrollBar().setValue(0)。如果您想知道,是的,出于与主题无关的原因,setText() 必须在 setViewPort() 之后。

问题在这里:用户单击按钮后,JScrollPane 的 View 一直滚动到底部。根据我的点击监听器中的最后一行,我希望滚动条位于顶部。

我突然打开一个调试器,令我惊恐的是,我发现在点击监听器结束后(在抽取过滤器时)jscrollpane 的视口(viewport)被强制降至底部。 Swing 似乎将编辑器/jscrollpane 的填充延迟到点击监听器结束之后,但首先调用了滚动条命令。因此,出现了不良行为。

无论如何,我想知道是否有一个干净的解决方案。似乎希望滚动 Pane 在修改后滚动到顶部是一个相当普遍的需求,所以我假设这是一个很好解决的问题。

谢谢!

最佳答案

您可以使用 JEditorPane.setCaretPosition(0)

关于java - JEdi​​torPane 中 JScrollPane 长文本向下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2442504/

相关文章:

java - commons.apache.org 中的 GenericObjectPool<T> 线程安全吗?

Java 按钮 Action 监听器会触发其他监听器吗?

java - JButton ActionListener 一般查询

java - 关于用户级线程阻塞时阻塞 "peer threads"的困惑

c# - 一个进程中的线程数量正常吗?

Java swing 添加来自另一个类的组件

java - 连续获取 jtable 值的总和

Java:打印出最后一个引用变量

java - Tomcat 。 Java运行时编译

java - Maven 和 java 插件框架