JTextPane应保持更新位置

时间:2014-09-04 06:33:44

标签: java swing scroll jtextarea jtextpane

我在textPane中有一个长文本(在scrollPane中),它会自动更新。更新后,窗格将滚动到textPane的顶部。如何停用“顶部滚动”(就像textArea一样)。我不能使用textArea,因为我用HTML格式化窗格中的文本。我不能用textArea做这个风格吧? :(

public void create(){
    ...
    scrollpane.setViewportView(textPane);
    textPane.setEditable(false);
    textPane.setContentType("text/html");
    ...
}

public void update(String text){
   textPane.setText(text);
}

感谢您的帮助!

解决方案:

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);
        }
    });
}

2 个答案:

答案 0 :(得分:1)

((DefaultCaret)textPane.getCaret()).setUpdatePolicy(DefaultCaret.NEVER_UPDATE)

您可以尝试使用插入符号的更新政策

答案 1 :(得分:0)

我想我已经做了类似你正在寻找的事情。在这里看看我对这个问题的回答:

Keep JScrollPane as same length java