删除JTextArea

时间:2017-01-08 04:33:15

标签: java swing jtextfield

我试图删除JTextArea中的所有偶数行,但是我无法让它工作。 我的JTextArea被称为"输入"并且我使用for循环遍历这些行,然后删除所有偶数行。 我的循环:

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

如果我把&#34;这是一个测试&#34;进入我的JTextArea,新行上的每个单词输出将是&#34;测试&#34; (每个单词都在新行上)。

1 个答案:

答案 0 :(得分:3)

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

这将始终获得第一行的偏移量,因此您将始终将文本从偏移0移除到第一行的末尾。

算法将比尝试在文本区域中向前循环时更复杂,因为每次删除一行时,以下行的偏移都会发生变化,相对行数会发生变化,因此您不知道哪一行是奇数/甚至更多。

更简单的方法是从文本区域的最后一行开始。这样,删除文本时前一行的相对行号不会改变。

您可以使用JTextArea的以下方法来帮助理解逻辑:

  1. getLineCount() - 从这里开始并倒数到第零行
  2. getLineEndOffset()getLineStartOffset() - 当您找到偶数行时,您会获得两个偏移并删除文本。