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

AFAIK,如果您不实现自己的jeditorpane版本,则无法完成。来自 javadoc

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

因此,内容的 mime 类型将继承自 url 的 mime 类型。稍后调用setContentyType将不起作用,因为这将更改 jeditorpane 的模型,清理内容。再次来自 Javadoc

注意:这具有更改模型的副作用,因为 EditorKit 是特定类型内容建模方式的来源。此方法将导致代表调用者调用 setDocument 以确保内部状态的完整性。

所以你必须继续使用 read 方法。

于 2012-12-11T18:44:10.110 回答