【发布时间】:2012-02-06 11:40:09
【问题描述】:
目前我有一种方法,它使用字符串缓冲区在运行时写出字符串。然后该方法返回此字符串,然后我将其显示在JTextArea 中。是否有另一种方法可以做到这一点,以便在方法运行时将字符串写入文本区域,而不是在完成后写入。谢谢。
【问题讨论】:
标签: java swing jtextarea stringbuffer
目前我有一种方法,它使用字符串缓冲区在运行时写出字符串。然后该方法返回此字符串,然后我将其显示在JTextArea 中。是否有另一种方法可以做到这一点,以便在方法运行时将字符串写入文本区域,而不是在完成后写入。谢谢。
【问题讨论】:
标签: java swing jtextarea stringbuffer
您可以将javax.swing.text.Document 参数添加到写入字符串缓冲区的方法中。然后在调用方法时,传入JTextArea.getDocument() 的值——这个对象代表JTextArea 中的文本。
然后每次将文本附加到字符串缓冲区时,也将其附加到Document,如下所示:
document.insertString(document.getLength(), stringToAppend, null);
请注意,这可能会使您现有的字符串缓冲区变得多余...实际上您正在使用Document 对象作为字符串缓冲区。另请注意,您可以打赌这种技术会比在显示之前将字符串缓冲区全部写出要慢得多。
【讨论】:
SwingWorker 而不是 Document — 请参阅 docs.oracle.com/javase/tutorial/uiswing/concurrency/…