2017-01-08 1 views
0

JTextArea의 모든 짝수 줄을 제거하려고하는데 작동하는 데 문제가 있습니다. JTextArea는 "input"이라고 불리며 for 루프를 사용하여 줄을 반복하고 모든 짝수 행을 제거합니다. 루프 내 :JTextArea의 줄을 제거하십시오.

for (int i=0; i<lineMax; i++) { 
    if (lineNum % 2 == 0) { 
     end = input.getLineEndOffset(0); 
     input.replaceRange("", 0, end); 
    } 
    lineNum++; 
} 

내가 출력 (새로운 행에 각 단어) "테스트"입니다 새 줄에 각 단어 내 JTextArea에에 "이것은 테스트입니다"넣어합니다. 당신은 항상 첫 번째 줄의 끝으로, 0 오프셋에서 텍스트를 제거 할 수 있도록 항상 첫 번째 줄의 오프셋을 얻을 것이다

답변

2
end = input.getLineEndOffset(0); 
input.replaceRange("", 0, end); 

.

알고리즘은 텍스트 영역에서 루프 포워드를 시도 할 때보 다 복잡합니다. 줄을 제거 할 때마다 다음 줄의 오프셋이 변경되고 상대 줄 번호가 변경되어 어떤 줄을 알 수 없기 때문입니다 홀수/더 이상입니다.

더 쉬운 방법은 텍스트 영역의 마지막 줄부터 시작하는 것입니다. 이렇게하면 이전 줄의 상대 라인 번호는 텍스트를 삭제할 때 변경되지 않습니다.

당신은 논리에 도움이되는 JTextArea 다음과 같은 방법을 사용할 수 있습니다

  1. getLineCount() - 여기에서 시작하고 제로
  2. getLineEndOffset()getLineStartOffset() 라인 다시 계산 - 당신은 당신이 얻을 더 라인을 찾을 때 두 개의 오프셋과 텍스트를 제거하십시오.
관련 문제