在 Java swing 中获取、修改和替换 JTextArea 中的一行/行内容的有效方法是什么?

问题描述 投票:0回答:1

如果您有一个包含许多行/行内容的 Java swing JTextArea,那么有什么好的且相对有效的方法可以使用行号将行的内容作为字符串获取,修改字符串,然后将原始行替换为修改了其中一行而不影响文本区域的其他行?

我正在考虑将文本区域内容作为字符串获取,然后将字符串分割为“ " 得到一个字符串数组,修改 stringArray[row] 并将字符串数组转回字符串,最后将文本区域的内容设置为修改后的字符串。但是这种方式似乎效率不太高,我认为 O(n) 时间可能很复杂。是否有比这更有效的方法来修改文本区域中的行? 谢谢你。

java string swing jtextarea
1个回答
0
投票

JTextArea 是正确的组件吗?为什么需要替换文本?也许 JList 或 JTable 会更好地显示数据行?

如果您确实需要

JTextArea
,则可以通过模型(即文本区域的
Document
)完成对数据的更改。

有方法:

  1. remove(...) - 删除文本
  2. insertString(...) - 插入文本
  3. getText(...) - 获取文本

然后您可以使用文本区域的方法来跟踪文档中给定行的开始/结束偏移量:

  1. getLineStartOffset(...)
  2. getLineEndOffset(...)

创建一个使用上述方法来完成您的任务的方法。

或者不直接更新文档,也许更简单的解决方案是使用 JTextArea 的

replaceRange(...)
方法。您将再次使用上述方法来获取给定行文本的开始/结束偏移量。

© www.soinside.com 2019 - 2024. All rights reserved.