2014-09-04 43 views
0

我有一个textPane(在scrollPane内)自动更新的长文本。更新后,窗格滚动到textPane的顶部。我怎样才能停用“顶部滚动”(如textArea呢)。我无法使用textArea,因为我使用HTML对窗格中的文本进行了样式设置。我不能用textArea来做这个样式,对吧? :(JTextPane应该保持位置在更新

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

将插入位置设置为文本窗格内的最后位置。 – MadProgrammer 2014-09-04 06:35:39

+0

一个[runnable示例](https://stackoverflow.com/help/mcve)它演示您的问题也将有所帮助 – MadProgrammer 2014-09-04 06:37:07

回答

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

您可以尝试插入符号

+0

感谢您的帮助,但这并没有解决我的问题:( – Sheldon 2014-09-04 07:27:56

+1

您可以存储可见的矩形并回滚后setText() – StanislavL 2014-09-04 08:45:28

+0

现在工作!!!我已经结合了这些mbw的响应。 – Sheldon 2014-09-05 07:39:25