2012-10-01 14 views
6

これは、おそらく1人の実装ではありませんが、チームプロジェクトの場合でも少し難しいですが、JEditorPaneを使用して、シンタックスハイライト付きのシンプルでエレガントなテキストエディタをまとめようとしていました。私はthisを見つけましたが、中止され、レクサーファイルと.lexの中身をすべて理解することができませんでした。私はこのプロジェクトが後に他のチームによって引き継がれたが、もう一度中止されたというブログでさえ見つかった。コードの折り畳みや物事のように(私はこれを行う方法を見つけることに誘惑されているにもかかわらず)私はあまりにも派手である必要はありませんが、少なくともの基本的な構文の強調表示存在するとかなり多くの行左端の数字は、例えばメモ帳++と同様です。少なくとも今のところ、Javaソースコードを強調するために必要なだけであることに留意してください。構文の強調表示と行番号を含むテキストエディタ?

私が探しているのは、チュートリアル、よく書かれているサンプルとサンプルコード、あらかじめ作成されたパッケージ、NetBeans用のツールでさえも可能です。私は、一から書かれたソースコードが必要です、私はちょうど使用することができる実装が必要です。前もって感謝します!

P.Shisは商業的にもあまりにも大きなものではないので、そこに多くのプログラミングエディタがいると、なぜ私は車輪を再発明したいのか尋ねないで、私は学習しています。

+0

私が似たようなことをしなければならなかったとき、この男は多くの助けをしました:@StanislavL(http://stackoverflow.com/users/301607/stanislavl) –

+0

私はすべてを見ることができれば彼の答えを簡単にチェックしますそれら。彼があなたを助けたのと同じような話題をリンクすることはできますか? :) –

+0

そんな前だった。私は彼のプロフィールのリンクを掲載したので、彼と直接話をすることができます。 –

答えて

5

RSyntaxTextAreaは、BSDライセンスを取得しており、お客様の要件に加え、コードの折り畳みなどをサポートしています。非常に使いやすい。

+0

非常に良いアイデアのように見えます、私はそれをチェックアウトします!ありがとう! :) –

+0

シンプルでエレガントで驚くべき機能と、本当に好きな機能がたくさん!あなたは私に多くの検索とトラブルを救った!ありがとう! :D –

4

これはNetbeansを中心にtutorialでしたか?またはこのスイングをチェックしましたcomponent

+0

+1良いリンク –

+0

2番目のリンクの例はコンパイルされませんか? 27行目のエラー:org.jdesktop.swingx.JXEditorPaneのクラスが見つかりません! –

+0

私はこれらのどれも、私に何らかの形で啓示されていませんでした。 :/ –

1

私は同様のプロジェクトに取り組んでいます。ここで私が思いついたのはこれです。行番号までは、実際のテキストペインにスクロールペインを付けました。

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

構文の強調表示が簡単な作業ではありませんが、何私はすべてのキーワードが含まれていくつかのテキストファイルをオフに基づいて文字列を検索することがされていたで開始:スクロールは、次のコードを使用して数字を変えました特定の言語。基本的にファイルの拡張子に基づいて、関数は正しいファイルを見つけて、そのファイル内のテキスト領域に含まれている単語を探します。