2012-10-01 2 views
6

팀 프로젝트의 경우에도 1 인 구현을 제외하고는 조금 어려울 지 모르지만, JEditorPane을 사용하여 구문 강조를 사용하여 간단하면서도 우아한 텍스트 편집기를 구성하려고했습니다. 나는 더 이상 중단 된 모든 을 만났고, 내부의 모든 렉서 파일과 .lex 정보를 이해하기가 정말로 힘들었다. 심지어 일부 블로그에서는이 프로젝트가 나중에 다른 팀에 의해 착수되었지만 다시 중단되었습니다. 코드 접기와 물건 (비록 내가 어떻게하는지 알아낼 유혹이 있긴하지만)이 너무 좋아할 필요는 없지만 적어도 기본 구문 강조가 존재한다.은 꽤 많이 존재한다. 줄 맨 왼쪽에있는 숫자는 메모장 ++과 같습니다. 적어도 현재는 Java 소스 코드를 강조 표시하기 만하면됩니다.구문 강조 표시 및 줄 번호가있는 텍스트 편집기?

튜토리얼, 잘 문서화 된 예제 및 샘플 코드, 미리 만들어진 패키지, NetBeans 용 도구조차도 할 수 있습니다. 처음부터 작성된 소스 코드가 필히 필요하지는 않습니다. , 사용할 수있는 구현이 필요합니다. 미리 감사드립니다!

P.Shis는 상업적이거나 너무 크지 않을 것입니다. 거기에 프로그래밍 에디터가 너무 많아서 내가 왜 바퀴를 다시 만들고 싶은지 묻지 말아주세요. 나는 배우고 있습니다. 그리고 이것은 나에게 좋은 운동이되었습니다!

+0

이 사람은 내가 비슷한 것을 할 필요가있을 때 많은 도움을주었습니다. @StanislavL (http://stackisflow.com/users/301607/stanislavl) –

+0

나는 모든 것을 살펴볼 수 있다면 그의 대답을 간단히 살펴볼 것입니다. 그들. 그가 당신을 도왔 던 비슷한 주제를 연결시켜 주시겠습니까? :) –

+0

그 전에했다. 나는 그의 프로필의 링크를 게시 했으므로 그와 직접 대화 할 수 있습니다. –

답변

5

RSyntaxTextArea은 BSD 라이선스가 있으며 요구 사항을 충족시키고 코드 접기 등을 지원합니다. 사용이 매우 간단합니다.

+0

아주 좋은 생각처럼 보입니다. 감사! :) –

+0

내가 좋아하는 심플하고 우아하며 놀라운 기능과 추가 기능이 많이 있습니다! 너는 나에게 많은 수색과 말썽을 저장했다! 감사! :디 –

4

Netbeans 주변에서 tutorial을 보았습니까? 또는이 스윙을 확인 했습니까 component?

+0

+1 멋진 링크 –

+0

두 번째 링크의 예도 컴파일되지 않습니까? 27 행의 오류 : org.jdesktop.swingx.JXEditorPane의 클래스를 찾을 수 없습니다! –

+0

BTW 이들 중 누구도 나를 어떤 식 으로든 깨달았습니다. 그들은 심지어 나를 혼란스럽게 만들었습니다! :/ –

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

구문 강조는 쉬운 일이 아니다,하지만 나는 모든 키워드를 포함 텍스트 파일을 기반으로 문자열을 검색 할 수있는 한 시작 : 스크롤 구획은 다음 코드 번호를 변경했다 특정 언어. 기본적으로 파일의 확장자를 기반으로 함수는 올바른 파일을 찾고 텍스트 영역에 포함 된 해당 파일의 단어를 찾습니다.