我想在 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 - JEditorPane 中 JScrollPane 长文本向下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2442504/