2014-09-04 99 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