【问题标题】:Java Update Components Dynamically [closed]Java 动态更新组件 [关闭]
【发布时间】:2015-02-22 04:22:43
【问题描述】:

假设我有一个 JEditorPane

我还有一个名为 addText(String S) 的 void,如下所示

public void addText(String s)
jeditorpane.setText(jeditorpane.getText() + s);
}

现在我将有一个按钮,按下时会读取文本文件的所有行,并使用缓冲阅读器将它们写入文本编辑器框中并逐行添加文本。

为什么当按下按钮时,应用程序会冻结几秒钟,然后立即发布所有内容。 是他们的一种方式,因此您可以看到动态发布的所有内容并看到它被逐一发布。代码就是这样写的。

我有一些来自 StackOverFlow 的资源可能会对您有所帮助:

【问题讨论】:

    标签: java swing dynamic concurrency jeditorpane


    【解决方案1】:

    为什么当按下按钮时,应用程序会冻结几秒钟,然后立即发布所有内容。

    您在 Swing 事件线程上的读取速度很慢,占用了线程并阻止它完成其工作,包括绘制到 GUI 和与用户交互。

    这是他们的一种方式,因此您可以看到动态发布的所有内容并看到它被逐一发布。代码就是这样写的。

    是的,使用后台线程,使用 SwingWorker 最容易获得。阅读Concurrency in Swing

    您可能希望使用通用 SwingWorker,特别是 SwingWorker<Void, String>,并使用它的发布/处理方法对在读取每一行时将字符串推送到您的文本组件中。


    编辑:我现在看到您在问题中放置的两个链接都已经提到了这个解决方案,这让我想知道您为什么问这个问题。

    【讨论】:

    • 因为它们都不适合我
    • @Master:那么这应该是您问题的一部分。你应该展示你已经尝试过的东西,解释你的尝试有什么问题或没有奏效。否则,您得到的只是我们反刍之前解释过的内容。请注意,“没有工作”告诉我们的信息很少,我们可以用来帮助您前进。请在您的描述中具体和详细。考虑更新您的问题。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2010-12-16
    • 1970-01-01
    相关资源
    最近更新 更多