4

これに関する非常に複雑な、または機能しない例を示す多くのチュートリアルがオンラインにあります。ネットビーンズが提供するシンタックスハイライターの使用を他の人に勧めているようですが、私はその方法に完全に戸惑っています!

私はこれについて多くのサイトをチェックしましたが、見つけることができる最高のものは次のとおりです: http://www.antonioshome.net/kitchen/netbeans/nbms-standalone.php

しかし、私はまだこの例を使用することができません (Netbeans プラットフォームを使用したくないが、その一部だけを使用したい人を対象としているため)。プラグアンドプレイ方式。たとえば、netbeans はデフォルトでいくつかの言語ハイライトをサポートしていますが、JEditorPane でハイライターを使用して Ruby/Python/Java などを解析できますか? または、独自のパーサーを作成する必要がありますか :-| ?

netbeans プラットフォームを使用して、スタンドアロン アプリケーションで構文ハイライトをプラグインする方法についての簡単な例を示していただければ幸いです。

4

5 に答える 5

1

ハロー、

スタンドアロン プラットフォーム アプリを実行しようとしている場合、同様の情報が不足していることがわかりました。最終的には、自分のアプリケーションでそれを行った方法を次に示します。はい、車輪を再発明している可能性があります..しかし、そもそも、作成することもできます..

ここで Java エディター キットの作成方法に関する情報を取得しました: http://java.sun.com/products/jfc/tsc/articles/text/editor_kit/index.html

必要なファイルを含む小さなパッケージを構築し、それをモジュールの 1 つの下にあるプラットフォーム アプリケーションに取り込みました。これらのスキャナ ビットがすべて隠されている tools.jar が必要です。これは、JDK インストール /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 スキャナーです。もちろん、この例を使用すると、文法とトークンをいじって、独自のルールを考え出すことができます。そのすべてに関するチュートリアルがあると思います..

これが少し役立つことを願っています。

于 2011-01-28T21:36:12.657 に答える
1

これは私がそれを使用する方法です:

String mimeType = "text/x-java"; // NOI18N
JEditorPane editorPane = new JEditorPane();

editorPane.setEditorKit(MimeLookup.getLookup(mimeType).lookup(EditorKit.class));
于 2010-06-17T06:41:33.253 に答える
0

以下は、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);
于 2010-11-05T22:11:06.847 に答える
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

于 2010-04-18T10:04:17.017 に答える
-1

行番号を取得するには、次のスニペットを使用できます。

BaseTextUI eui = new BaseTextUI();
eui.installUI(editor);
panel.add(eui.getEditorUI().getExtComponent());
于 2010-07-05T13:54:16.267 に答える