JTextPaneを使用してXMLファイルを編集しています。jflexパーサーはxmlファイルをトークンに分割し、カスタムドキュメントを使用します(DefaultStyledDocumentを拡張します)i色の構文:
doc.setCharacterAttributes(token.getCharBegin()+ change、token.getCharEnd()-token.getCharBegin()、Token_Styles_Define.getStyle(token.getDescription())、true);
私の問題は、大きなxmlファイルをロードして編集することです。たとえば、400kbのxmlファイルは30秒かかり、700kbの1Mbの場合はJavaヒープスペースを取得します。私はそれをグーグルして見つけました:
"JTextPane / JEditorPaneが適切に処理できる制限を定義します(500KBや1MBなど)。このサイズのコントロールにファイルのチャンクをロードするだけで済みます。ファイルの最初のパーティションをロードすることから始めます。次に、スクロールコンテナを操作して、ファイルの現在のチャンクの終わり/始まりに到達したかどうかを確認します。到達した場合は、待機カーソルを表示し、前/次のチャンクをメモリとテキストコントロールにロードします。ファイル内の現在のカーソル位置から計算されます(オフセット)。チャンクのロード=オフセット-制限/2からオフセット+制限/2チャンクをロードするときにJTextPane/JEditorPaneのテキストを変更しないでください。ファイルの位置。これは簡単な解決策ではありませんが、これを行うための他のサードパーティのコントロールが見つからない場合は、この方法を使用します。」(ブルーノコンデ)
これは良い解決策であり、誰かが私に例を与えることができますか(リンクチュートリアルプロジェクト)?または他の解決策はありますか?jtextpaneのパフォーマンスをどのように改善できますか?どうも