2010-08-31 38 views
0

我正在使用JTextPane編輯XML文件。在令牌甲JFLEX解析器分裂xml文件,並使用自定義文檔(延伸 DefaultStyledDocument)1顏色語法:JTextPane編輯器大文件和性能

doc.setCharacterAttributes(token.getCharBegin()+變化, token.getCharEnd() - token.getCharBegin() , Token_Styles_Define.getStyle(token.getDescription()),true);

我的問題是加載和編輯大的XML文件,例如一個400KB的XML文件需要30秒和700KB 1MB我得到的Java堆空間。 我google一下,我發現:

「定義一個的JTextPane/JEditorPane中可以很好地處理的限制(如500KB或1MB)您只需要到文件的塊裝入這種規模的控制 。首先加載文件的第一個分區 然後,您需要與滾動容器進行交互,並查看它是否已經到達文件當前塊的末尾/開頭。如果是,請顯示一個不錯的等待遊標並加載之前的/下一個塊到內存並進入文本控制 加載塊是根據當前文件中的光標位置(偏移量)計算的 加載chunk = offset - limit/2到offset + limit/2 JTextPane上的文本/ JEditorPane在加載塊或e時不能更改用戶感覺就像是在文件的另一個位置。 這不是一個簡單的解決方案,但如果您沒有找到任何其他第三方控件來做到這一點,我會這樣做。 「(布魯諾·孔德)

這是一個很好的解決方案,任何人可以給我一個爲例(鏈接教程項目)?或者有沒有其他解決辦法? 我們怎樣才能提高JTextPane的性能? THX

+0

http://java-sl.com/JEditorPanePerformance.ht ml 可能會有幫助關於, Stas – StanislavL 2010-10-31 15:56:37

回答

0

的兆字節在我的桌面上,使用setText()添加一個1MB字符串需要1.6秒,但一旦加載就沒有明顯的延遲。最有可能的延遲來源。