Java 使用jsyntaxpane突出显示JEditorPane语法

Java 使用jsyntaxpane突出显示JEditorPane语法,java,jeditorpane,jsyntaxpane,Java,Jeditorpane,Jsyntaxpane,我的应用程序中有一个JEditorPane,我使用jsyntaxpane和以下代码将java文件加载到其中,它工作得非常好: 突出 jsyntaxpane.DefaultSyntaxKit.initKit(); textarea.setContentType("text/java"); 加载文件 int a = filesToCompileList.getSelectedIndex(); FileReader reader = new FileReader(file); BufferedRea

我的应用程序中有一个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吗?

好吧,如果您不实现自己版本的,就无法实现。来自javadoc

setPage方法可用于从URL初始化组件。 在这种情况下,将根据URL确定内容类型,并且 将设置该内容类型的已注册EditorKit

因此,内容的mime类型将从url的mime类型继承。稍后调用setContentyType将无效,因为这将更改jeditorpane的模型,从而清理内容。同样来自Javadoc

注意:这会产生更改模型的副作用,因为 EditorIt是特定类型内容的来源 模仿。此方法将导致代表调用setDocument 调用方确保内部状态的完整性

因此,您必须继续使用read方法