2013-06-12 5 views
0

저는이 프로젝트의 일부 전문가와 함께이 프로젝트에 성공했습니다. 아직 한 가지 문제가 있습니다.선택 인덱스가 getText 인덱스와 동일하지 않습니다

마지막 문제에서 문자열을 검색하고 강조해야하지만 지금은 내 문제는 다음과 같습니다.

왜 선택 색인이 색인과 다른가요?

이 내 버튼 코드 :

int startFrom = jEditorPane1.getSelectionStart(); 
    if(jEditorPane1.getSelectionStart() == jEditorPane1.getSelectionEnd()){ 
     startFrom = -1; 
    } 

    String searchWord = jTextField3.getText(); 
    int searchIndex = jEditorPane1.getText().indexOf(searchWord, startFrom + 1); 
    if(searchIndex != -1){ 
     jEditorPane1.requestFocusInWindow(); 
     jEditorPane1.select(searchIndex, searchIndex+searchWord.length()); 
    } 
    else{ 
     jEditorPane1.setSelectionStart(0); 
     jEditorPane1.setSelectionEnd(0); 
    } 

그리고 내가 어떤 문자열 처리를 수행하는 예를 들어 JEditorPane의/JTextPane가 지수

스윙 문자열 색인을 변환 할 필요가 있음을 확신 : 전 다음과 같이 문자열을 검색하십시오. "안녕하세요, 안녕하세요."

이렇게 강조 표시하면 다음과 같습니다. "안녕하세요, 안녕하세요? o 어떻게 하시겠습니까?" 그것은 그 무엇은해야 forther 하나의 인덱스를 시작하고, 여기에는 \ n의 야기 할것이다 이스케이프 문자이고 내가 그것을 단일 행 텍스트에 일어날 시간의 원인, 잘 모릅니다 의미

...

내가 어떻게 할 수 이거 타시겠습니까?

+0

최근 게시 한 내용을 배웠습니까? 원래 질문과 함께 SSCCE를 게시하도록 요청 받았습니다. SSCCE를 게시 할 때까지 기다릴 시간이 없습니다. 내가 마지막 질문에 답했기 때문에 나는 그 해답을 알고있다. 이 질문을 읽는 다른 사람들은 당신의 질문의 맥락을 모른다. 또한, JTextPane을 사용하고 있기 때문에, 변수에 apporopriately 이름을 붙여서 게시 된 코드가 우리를 오도하지 않도록하십시오. JEditorPane 및 JTextPane의 동작은 다른 경우가 있습니다. – camickr

답변

1

자세한 내용과 해결 방법은 Text and New Lines을 참조하십시오. 오프셋은 검색을 수행 할 때 일치하는 다음 텍스트를 선택 있도록

int length = textPane.getDocument().getLength(); 
String text = textPane.getDocument().getText(0, length); 

위에만 EOL 문자열로 "\ n을"를 반환합니다 :이 링크의 기본은 사용하는 것입니다.

+0

아, 고맙습니다. 다시 한 번 고맙습니다. 만약 내가 제한된 국가에서 살고 있고, 일부 글로벌 계정을 가지고 있다면, 나는 당신에게 절반을 지불하고 싶지 않습니다. 왜냐하면 당신은 단지 저의 일을 구원하지 못했을뿐 아니라 저의 명성을 얻었 기 때문에, 학생은 저를 좋은 코더로 알았고 저에게는 나빴습니다. surly 나는 아무것도 아니야 : D –

+0

만약 내가 전에 새로운 것을 가지고 있었다면, 나는 하이 라이터를 만들기 위해 HTML을 활용할 수 있었다. 나는 그것을 할 수 없다고 말했다. :) –

+0

JTextPane은 강조 표시를 지원하며, HTML로 재생. – camickr