首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于如何将大文件读入jtextarea的建议

关于如何将大文件读入jtextarea的建议
EN

Stack Overflow用户
提问于 2015-08-01 12:31:28
回答 3查看 547关注 0票数 3

我想把大文件(如10-15k行)读入jtextarea。除此之外,我还必须添加到列表中的每一行,并突出jtextarea中的一些特定行。

我现在尝试的是,将文件传递到FileReader中到BufferedReader中。在我的SwingWorker中,在doBackground方法中我调用:

代码语言:javascript
运行
复制
 while ((line = br.readLine()) != null) {
      textArea.append(line);
      textArea.append(System.getProperty("line.separator"));
      list.add(line);
      highlightLine(lineNumber);
 }

当我运行这个程序时,我选择文件并打开读取进程,它会立即加载多达700行,然后程序就会慢下来,每秒加载10行。

我的另一个想法是,使用JTextComponent read方法读取整个文件( setText似乎比追加每一行更快),然后再读取整个文件或遍历jtextarea中的每一行,并将该行添加到列表中并突出显示,我认为这不是很有效。你有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-01 14:49:37

我想将大文件(如10-15k行)读入jtextarea区域。

使用read(...)类的JTextArea方法直接将整个文件读入文本区域。

我还必须将每一行添加到列表中

为什么你需要两份课文?如果需要一行数据,可以从文本区域获取文本:

代码语言:javascript
运行
复制
int start = textArea.getLineStartOffset(...);
int end = textArea.getLineEndOffset(...);
String text = textArea.getDocument().getText(...);

突出显示某些特定行

在将行加载到文本区域后,使用荧光笔突出显示它们。

代码语言:javascript
运行
复制
Highlighter highlighter = textArea.getHighlighter();
highlighter.addHighlight(...);

同样,您可以使用上面的代码获取行的偏移量。

票数 4
EN

Stack Overflow用户

发布于 2015-08-01 12:54:10

使用文档接口。它是保存视图组件数据的模型,即JTextArea。您可以使用JTextAreagetDocument获取它,也可以使用已经实现Document的类之一: AbstractDocument、DefaultStyledDocument、HTMLDocument、PlainDocument。然后将您选择的DocumentsetDocument一起添加到JTextArea中。

可以使用insertString(int offset, String str, AttributeSet a)Document添加内容。它还支持几个侦听器,您可以考虑使用render(Runnable r)对文档进行样式设置。

票数 1
EN

Stack Overflow用户

发布于 2015-08-01 12:46:42

我还没有尝试过这种方法,但是我建议将所有文件内容放入一个字符串中,然后使用setText(String )方法一次性设置JTextArea的文本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31761867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档