2017-01-08 27 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() - 当你发现偶数行你两个偏移量并删除文本。