【问题标题】:Java delay without freezing UI [duplicate]Java延迟而不冻结UI [重复]
【发布时间】:2017-02-10 01:25:01
【问题描述】:

在 Java 中,我可以使用 sleep(x) 将某些代码的运行延迟 x 秒。但是,如果我使用 Swing,这会使我的 GUI 冻结,所以它不是一个理想的解决方案。

如何在 Java 中运行一系列代码之前产生延迟?

【问题讨论】:

  • 您的代码是如何设置的?您是否像应有的那样使用 SwingWorker 线程? docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
  • @Brick 我不是,因为我正在制作一个非常简单的程序,只是试图延迟标签的更改(不是繁重的后台任务)。我确实自己弄清楚了,我在下面发布了自己的答案。
  • 这个问题和this popular question of mine几乎一模一样,只是我说的是java而不是swift。
  • 典型的 Swing 解决方案是使用 Swing Timer。您发布的解决方案过于复杂,具有潜在危险,因为它可能会在事件线程之外运行 Swing 代码,因此不建议将其作为本网站的答案。

标签: java swing timer wait


【解决方案1】:

首先,你可能不应该做你正在做的任何事情 在显示线程中。如果它在您自己的线程中,则 GUI 不会冻结。但没有重新审视你的整个线程 策略,通常的解决方法是添加一个任务队列 稍后运行。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2015-06-16
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2011-03-12
    • 1970-01-01
    相关资源
    最近更新 更多