在SwingWorker中打印时,JTextArea不会自动滚动

时间:2016-02-06 22:40:25

标签: java swing scroll jscrollpane jtextarea

我的问题是添加了JTextArea的{​​{1}}没有滚动到打印的最新行(滚动条保持在顶部)。
需要注意的是,行是在单独的JScrollPane线程中打印的。

然而,如果我摆脱SwingWorker中的SwingWorker,滚动似乎工作正常。

有人可以给我一个如何处理这个问题的提示吗?

以下是我正在测试的代码(省略simulation()):

import

Screenshot

1 个答案:

答案 0 :(得分:4)

  

以下是我正在测试的代码(省略了导入):

为什么呢?我们可以复制/粘贴/测试的邮政编码。我不使用IDE,也不必花时间输入导入。

我测试时你的代码没有做任何事情。我在Windows 7上使用JDK8。

我必须在SwingWorker中循环后添加以下内容:

customOutputStream.flush();
  

没有滚动到打印的最新行(滚动条保持在顶部)。

它不会滚动,因为文本未附加到EDT上的文本区域。

JTextArea textArea = new JTextArea();
DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

以上代码对我有用。

有关此问题的详情,请查看Text Area Scrolling