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 - 限制谷歌视觉中的检测区域,文本识别

c# - "Safe handle has been closed"带有 SerialPort 和 C# 中的线程

Java:程序不保存旧图形

java - 标题栏图形渲染

java - 如何使 JTable 内的 JPanel 内的组件可编辑?

java - 该方法没有正确检查该值

java - Java中最快的递归逃脱

java - 如果直接从内存读取 volatile 字段,那么从哪里读取非 volatile 字段?

java - 数组的 volatile 数组

java - 关于使用另一个 Web 服务的 Web 服务的建议