JEdi​​torPane使用jsyntaxpane突出显示语法

时间:2012-07-17 18:30:47

标签: java jeditorpane jsyntaxpane

我的应用程序中有一个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以不同的方式突出显示?

1 个答案:

答案 0 :(得分:0)

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

  

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

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

  

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

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