Java JTextPane应在更新时保持位置

Java JTextPane应在更新时保持位置,java,swing,scroll,jtextarea,jtextpane,Java,Swing,Scroll,Jtextarea,Jtextpane,我在文本窗格(滚动窗格内)中有一个长文本,可以自动更新。更新后,窗格滚动到文本窗格的顶部。如何停用“顶部滚动”(就像文本区域一样)。我不能使用textArea,因为我在窗格中使用HTML设置文本样式。我不能用文本区做这种风格,对吗( 谢谢你的帮助 解决方案: public void update(final String iv_outputText) { SwingUtilities.invokeLater(new Runnable() { @Override

我在文本窗格(滚动窗格内)中有一个长文本,可以自动更新。更新后,窗格滚动到文本窗格的顶部。如何停用“顶部滚动”(就像文本区域一样)。我不能使用textArea,因为我在窗格中使用HTML设置文本样式。我不能用文本区做这种风格,对吗(

谢谢你的帮助

解决方案:

public void update(final String iv_outputText) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {

            ((DefaultCaret) textPane.getCaret())
                    .setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
            textPane.setText(iv_outputText);
        }
    });
}

您可以尝试更新插入符号的策略

我想我做了一些与您所寻找的类似的事情。请看我对这个问题的回答:


将插入符号位置设置为文本窗格中的最后一个位置。A显示您的问题也会有帮助。谢谢您的帮助,但这并没有解决我的问题:(您可以存储可见矩形,并在setText()后向后滚动,现在它可以工作了!!!我已将mbw的响应组合在一起。我在上面发布了代码
public void update(final String iv_outputText) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {

            ((DefaultCaret) textPane.getCaret())
                    .setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
            textPane.setText(iv_outputText);
        }
    });
}
((DefaultCaret)textPane.getCaret()).setUpdatePolicy(DefaultCaret.NEVER_UPDATE)