Swing 如何在JEditorPane中使用Netbeans平台语法突出显示?
网上有很多教程提供了非常复杂或不起作用的例子。似乎有人建议其他人使用netbeans提供的语法高亮器,但我完全不知道如何做到这一点 我在这方面查阅了许多网站,我能找到的最好的网站是: 然而,我仍然不能使用这个例子(因为它是针对那些不想使用Netbeans平台的人,而只是其中的一部分),我仍然不确定我是否可以 只需以简单的即插即用方式使用语法高亮显示即可。例如,netbeans支持 默认情况下,我可以使用JEditorPane中的高亮标记来解析Ruby/Python/Java吗?或者我需要编写自己的解析器:-|Swing 如何在JEditorPane中使用Netbeans平台语法突出显示?,swing,netbeans,platform,jeditorpane,Swing,Netbeans,Platform,Jeditorpane,网上有很多教程提供了非常复杂或不起作用的例子。似乎有人建议其他人使用netbeans提供的语法高亮器,但我完全不知道如何做到这一点 我在这方面查阅了许多网站,我能找到的最好的网站是: 然而,我仍然不能使用这个例子(因为它是针对那些不想使用Netbeans平台的人,而只是其中的一部分),我仍然不确定我是否可以 只需以简单的即插即用方式使用语法高亮显示即可。例如,netbeans支持 默认情况下,我可以使用JEditorPane中的高亮标记来解析Ruby/Python/Java吗?或者我需要编写自
我非常欣赏一个关于如何使用netbeans平台在独立应用程序中插入语法突出显示的简单小示例 部分答案: 显然,以下内容将为Java启用语法高亮显示(以及一些代码完成),但是它似乎不适用于其他语言(Java、XML除外),即使它应该[1]。此外,我找不到任何方法来启用行号(它们已启用,但未显示) 如果有人决定帮助解决这个问题,一个包含行号和其他属性的更统一的示例将是很好的。当然不应该很复杂 [1] 我就是这样使用它的:
String mimeType = "text/x-java"; // NOI18N
JEditorPane editorPane = new JEditorPane();
editorPane.setEditorKit(MimeLookup.getLookup(mimeType).lookup(EditorKit.class));
要获取行号,可以使用以下代码段:
BaseTextUI eui = new BaseTextUI();
eui.installUI(editor);
panel.add(eui.getEditorUI().getExtComponent());
下面应该为您提供javascript的语法突出显示。查找其他类型的MIME以使用不同的语法
File tmpFile = File.createTempFile("tmp_sejsrunner", ".js");
tmpFile = FileUtil.normalizeFile(tmpFile);
FileObject fob = FileUtil.createData(tmpFile);
DataObject dob = DataObject.find(fob);
EditorKit kit = CloneableEditorSupport.getEditorKit("text/javascript");
this.scriptEditorPane.setEditorKit(kit);
this.scriptEditorPane.getDocument().putProperty(Document.StreamDescriptionProperty, dob);
你好
如果你想做一个独立的平台应用程序,我发现类似的信息缺乏,最后这里是我如何在我自己的应用程序中做到这一点的,是的,这可能是重新发明轮子。。但既然我一开始找不到方向盘,不妨创建一个
我在这里获取了有关如何创建java编辑器工具包的信息:
构建了一个包含必要文件的小程序包,并将其拉入其中一个模块下的平台应用程序中。您将需要tools.jar,所有扫描器位都隐藏在那里,它位于JDK install/lib文件夹下—您必须将其打包
然后使用测试程序中的示例来了解如何设置样式,-我喜欢您对标记着色的完全控制
不知羞耻地从包含的JavaKitTest中复制
JavaContext styles = kit.getStylePreferences();
Style s;
//Make Comment lurid green
s = styles.getStyleForScanValue(Token.COMMENT.getScanValue());
StyleConstants.setForeground(s, new Color(102, 153, 153));
//Make String err.. wotever color that is..
s = styles.getStyleForScanValue(Token.STRINGVAL.getScanValue());
StyleConstants.setForeground(s, new Color(102, 153, 102));
//Make NEW nice n red
s = styles.getStyleForScanValue(Token.NEW.getScanValue());
StyleConstants.setForeground(s, new Color(102, 10, 10));
//Do some other scan codes for keywords
Color keyword = new Color(102, 102, 255);
for (int code = 70; code <= 130; code++) {
s = styles.getStyleForScanValue(code);
if (s != null) {
StyleConstants.setForeground(s, keyword);
}
}
JavaContext styles=kit.getStylePreferences();
风格;
//绿得可怕
s=styles.getStyleForScanValue(Token.COMMENT.getScanValue());
设置前景(s,新颜色(102153153));
//使字符串出错。。那是什么颜色。。
s=styles.getStyleForScanValue(Token.STRINGVAL.getScanValue());
setForeground(s,新颜色(102153102));
//使新的漂亮的红色
s=styles.getStyleForScanValue(Token.NEW.getScanValue());
设置前景(s,新颜色(102,10,10));
//对关键字执行一些其他扫描代码
颜色关键字=新颜色(102102255);
例如(int code=70;code Antonio的示例看起来像是基于NB 5.5平台的,所以一些“酱汁”可能已经改变了。是的,这是我不能使用此示例的原因之一,因为它很好!
JavaContext styles = kit.getStylePreferences();
Style s;
//Make Comment lurid green
s = styles.getStyleForScanValue(Token.COMMENT.getScanValue());
StyleConstants.setForeground(s, new Color(102, 153, 153));
//Make String err.. wotever color that is..
s = styles.getStyleForScanValue(Token.STRINGVAL.getScanValue());
StyleConstants.setForeground(s, new Color(102, 153, 102));
//Make NEW nice n red
s = styles.getStyleForScanValue(Token.NEW.getScanValue());
StyleConstants.setForeground(s, new Color(102, 10, 10));
//Do some other scan codes for keywords
Color keyword = new Color(102, 102, 255);
for (int code = 70; code <= 130; code++) {
s = styles.getStyleForScanValue(code);
if (s != null) {
StyleConstants.setForeground(s, keyword);
}
}