0

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のパフォーマンスをどのように改善できますか?どうも

4

1 に答える 1

0

JTextPane 内のメガバイトのテキストは問題になりません。私のデスクトップでは、setText() を使用して 1MB の文字列を追加するのに約 1.6 秒かかりますが、読み込まれると目立った遅延はありません。

構文の強調表示を無効にしてみてください。それが遅延の最も可能性の高い原因です。

于 2010-09-01T17:59:00.717 に答える