0

アプリケーションに JEditorPane があり、jsyntaxpane と次のコードを使用して Java ファイルをロードしていましたが、完全に機能していました。

ハイライトする

jsyntaxpane.DefaultSyntaxKit.initKit();
textarea.setContentType("text/java");

ファイルをロードする

int a = filesToCompileList.getSelectedIndex();
FileReader reader = new FileReader(file);
BufferedReader br = new BufferedReader(reader);
textarea.read.read(br, index);
br.close();
textarea.requestFocus();

しかし、ファイルをロードする方法を変更する必要があり、現在ファイルを次のようにロードしていることを知っています

File file = new File(filePath);
textarea.setPage(file.toURI().toURL());

これは私が望む方法でファイルをロードしていますが、Javaファイルのテキストを強調表示していません! これを修正する方法や、別の方法で Java を強調表示する方法を知っている人はいますか?

4

1 に答える 1

0

ちなみに、独自のバージョンのjeditorpaneを実装しないと、実行できません。javadocから

setPageメソッドを使用して、URLからコンポーネントを初期化できます。この場合、コンテンツタイプはURLから決定され、そのコンテンツタイプに登録されているEditorKitが設定されます。

したがって、コンテンツのmimeタイプは、URLのmimeタイプから継承されます。後でsetContentyTypeを呼び出しても効果はありません。これにより、jeditorpaneのモデルが変更され、コンテンツがクリーンアップされます。再びJavadocから

注:EditorKitは特定のタイプのコンテンツのモデル化方法のソースであるため、これにはモデルを変更するという副作用があります。このメソッドにより、呼び出し元に代わってsetDocumentが呼び出され、内部状態の整合性が保証されます。

したがって、readメソッドを使い続ける必要があります。

于 2012-12-11T18:44:10.110 に答える