質問

これは、一人で実装する場合はもちろんのこと、おそらくチーム プロジェクトであっても少し難しいことですが、私は、 JEditorPane. 。つまずいた これ これは廃止されましたが、レクサー ファイルや .lex が含まれているため、理解するのが非常に困難でした。このプロジェクトは後に他のチームによって引き継がれたものの、再び中止されたことも、あるブログで知りました。コードを折りたたんだりするなど、あまり派手にする必要はありません (これを行う方法を知りたくなるかもしれませんが)、少なくとも 基本的な構文の強調表示 存在すること、そしてほとんど 行番号 たとえば、Notepad++ のように、一番左側にあります。少なくとも現時点では、Java ソースコードを強調表示するためにのみ必要であることに留意してください。

私が探しているのは、チュートリアル、十分に文書化された例とサンプル コード、既成のパッケージ、または NetBeans 用のツールでも機能します。ソース コードを最初から作成する必要はありません。必要なのは、役に立ちそうな実装。前もって感謝します!

P.S. これは商業的なものではありませんし、あまり大掛かりなものではありません。世の中にはプログラミング エディターがたくさんあるのに、なぜ車輪の再発明をする必要があるのか​​は聞かないでください。私は学んでおり、これは私にとって良い練習になりました。

役に立ちましたか?

解決

RSyntaxTextArea BSD ライセンスを取得しており、要件に加えてコードの折りたたみなどをサポートしています。使い方はとても簡単です。

他のヒント

さて、私も同様のプロジェクトに取り組みましたが、ここに私が思いついたものがあります。行番号に関しては、実際のテキストペインに接続されたスクロールペインを使用しました。スクロールペインは次のコードで数値を変更していました。

public class LineNumberingTextArea extends JTextArea
{
private JTextPane textArea;


/**
 * This is the contructor that creates the LinNumbering TextArea.
 *
 * @param textArea The textArea that we will be modifying to add the 
 * line numbers to it.
 */
public LineNumberingTextArea(JTextPane textArea)
{
    this.textArea = textArea;
    setBackground(Color.BLACK);
    textArea.setFont(new Font("Consolas", Font.BOLD, 14));
    setEditable(false);
}

/**
 * This method will update the line numbers.
 */
public void updateLineNumbers()
{
    String lineNumbersText = getLineNumbersText();
    setText(lineNumbersText);
}


/**
 * This method will set the line numbers to show up on the JTextPane.
 *
 * @return This method will return a String which will be added to the 
 * the lineNumbering area in the JTextPane.
 */
private String getLineNumbersText()
{
    int counter = 0;
    int caretPosition = textArea.getDocument().getLength();
    Element root = textArea.getDocument().getDefaultRootElement();
    StringBuilder lineNumbersTextBuilder = new StringBuilder();
    lineNumbersTextBuilder.append("1").append(System.lineSeparator());

    for (int elementIndex = 2; elementIndex < root.getElementIndex(caretPosition) +2; 
        elementIndex++)
    {
        lineNumbersTextBuilder.append(elementIndex).append(System.lineSeparator());
    }
    return lineNumbersTextBuilder.toString();
}
}

構文の強調表示は簡単な作業ではありませんが、私がまず始めたのは、特定の言語のすべてのキーワードを含むテキスト ファイルに基づいて文字列を検索できるようにすることでした。基本的に、この関数はファイルの拡張子に基づいて正しいファイルを見つけ、そのファイル内でテキスト領域内に含まれる単語を探します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top