【问题标题】:How can I see the every each line one by one? [duplicate]我怎样才能一一看到每一行? [复制]
【发布时间】:2012-08-15 08:00:46
【问题描述】:

可能重复:
How I append text to textarea with using swingworker class?

我在 for 循环中附加了我的 jtextarea 多行。当我添加行时,我在文本上看不到任何行,但是当 for 循环完成时,所有行都显示出来了。我怎样才能一一看到每一行?

【问题讨论】:

    标签: java jtextarea


    【解决方案1】:

    不要在Event Dispatching Thread 中执行您的进程,它会阻止重绘更新的发生。

    您应该使用SwingWorker API

    还有,看看

    让我猜猜你在做什么

    while (doSomeWork) {
       // do some processing
       textArea.append(someText);
    }
    

    或者可能是for 循环

    而你,有些期待 UI 神奇地更新?

    不幸的是,尽管我很喜欢它那样工作,但它不是那样工作的。

    为了更新屏幕,您必须允许事件调度线程继续运行,以便它可以处理重绘请求(以及一堆其他重要的事情),您需要将处理负载转移到另一个线程。

    不,没有其他方法,最简单的方法是使用 SwingWorker

    【讨论】:

    • 我不明白。在这里举一些例子?是不是更简单?
    • 阅读一些链接。如果您有特定问题,请搜索 SO 或发布新问题
    • 请提供一些代码示例。我想像你写的那样在循环中添加行。
    • 看看stackoverflow.com/questions/11927167/…我留下了很多例子
    • 我不要它,它是关于移动文件的。只是我想追加文本
    【解决方案2】:

    我不确定,但在你的 for 循环中使用它: jTextArea.updateUI();

    【讨论】:

    • 不行我试试
    • 试试 jframe.updateUI();或 jpanel.updateUI();也是。
    • @markhmaltion updateUI 与重绘无关,它与外观和感觉有关,当他阻止 EDT 时,什么都不会重绘
    猜你喜欢
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    相关资源
    最近更新 更多