2017-01-08 54 views
0

我試圖刪除JTextArea中的所有偶數行,但我無法正常工作。 我的JTextArea被稱爲「輸入」,我使用for循環遍歷行,然後刪除所有甚至。 我的for循環:刪除JTextArea中的行

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

如果我把「這是一個測試」進入我的JTextArea與新線的每個字輸出將是(在新行,每個字)「測試」。

回答

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

這將始終得到第一行的偏移量,因此您將始終從偏移量0中刪除文本到第一行的末尾。

該算法會比當您嘗試在文本區域中向前循環時更復雜,因爲每次刪除一條線時,以下幾行的偏移量會發生變化,並且相對行數會發生變化,因此您不知道哪一行奇怪/甚至更多。

更簡單的方法是從文本區域的最後一行開始。這種方式在刪除文本時不會改變先前行的相對行號。

您可以使用JTextArea以下方法來幫助與邏輯:

  1. getLineCount() - 從這裏開始計數回零線
  2. getLineEndOffset()getLineStartOffset() - 當你發現偶數行你兩個偏移量並刪除文本。