如何使用JEditorPane使用Netbeans平台语法高亮显示?

时间:2010-03-14 07:44:42

标签: swing netbeans platform jeditorpane

网上有很多教程,给出了非常复杂或不起作用的例子。似乎人们建议其他人使用netbeans提供的语法荧光笔,但我完全不知道如何这样做!

我已经检查了很多这样的网站,我能找到的最好的是: http://www.antonioshome.net/kitchen/netbeans/nbms-standalone.php

但是我仍然无法使用这个例子(因为它针对的是那些不想使用Netbeans平台而只是其中一部分的人),我仍然不确定我是否可以 只需以简单的即插即用方式使用语法高亮。例如netbeans支持 默认情况下有几种语言亮点,我可以使用JEditorPane中的荧光笔来解析Ruby / Python / Java吗?或者我需要编写自己的解析器: - | ?

我将非常感谢一个关于如何使用netbeans平台在独立应用程序中插入语法高亮的简单示例。

5 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

喂,

如果你想要一个独立的平台应用程序,我发现类似的信息缺乏,最后这里是我在自己的应用程序中做到的,是的,它可能会重新发明轮子..但是因为我找不到轮到第一位,不妨创造一个..

我在这里获取了有关如何创建java编辑器工具包的信息: http://java.sun.com/products/jfc/tsc/articles/text/editor_kit/index.html

使用必要的文件构建一个小包,并将其拖入其中一个模块下的平台应用程序中。您将需要tools.jar,其中所有这些Scanner位都隐藏,它位于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);
        }
    }

这只是一个java扫描程序,当然在这个例子中你可以使用语法和标记,并提出自己的规则,我认为有关于所有这些内容的教程..

希望这有点帮助。

答案 2 :(得分:0)

部分答案:

显然,以下内容将启用Java的语法突出显示(以及一些代码完成),但它似乎不适用于其他语言(java,XML除外),即使它应该[1]。此外,我找不到任何启用行号的方法(它们已启用,但它们没有显示)!

yourEditor.setContentType("text/x-java");
yourEditor.putClientProperty("HighlightsLayerIncludes", "^org\\.netbeans\\.modules\\.editor\\.lib2\\.highlighting\\.SyntaxHighlighting$");

如果有人决定帮助解决这个问题,那么包含行号和其他属性在内的更为统一的示例将会很好。当然它应该不是很复杂?!

[1] http://netbeans.sourcearchive.com/lines/6.5-0ubuntu2/CodeTemplatesPanel_8java-source.html

答案 3 :(得分:0)

以下内容应该为您提供javascript语法高亮显示。查找其他类型的mimes以使用不同的语法。

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);

答案 4 :(得分:-1)

要获取行号,您可以使用以下代码段:

BaseTextUI eui = new BaseTextUI();
eui.installUI(editor);
panel.add(eui.getEditorUI().getExtComponent());