【问题标题】:(Java Swing) Calling function in time intervals and displaying time to next call in label(Java Swing)以时间间隔调用函数并在标签中显示下一次调用的时间
【发布时间】:2011-05-21 16:45:12
【问题描述】:

我在 Java Swing 应用程序中有这样的功能。单击按钮后,我需要间隔和循环调用许多功能。必须在 jbutton 内部调用函数,因为我在 View 中有一些用于 jbutton 函数的全局参数。你能帮我如何在调用函数之间创建时间延迟以及如何在 jLabel 中显示剩余时间吗?

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {

        statusMessageLabel.setText("Proccess started.");
        for(int i=0;i< cycles;i++) {

            //display remaining time
            jLabelTimer.setText("00:09:59");
            // after time call many functions and then go again
            manyFunctions();

        } catch (Exception e) {
            System.out.println(e);
        }
        statusMessageLabel.setText("Proccess ended.");
        }
}

【问题讨论】:

    标签: java swing time


    【解决方案1】:

    我同意 Howard 的建议,即 Swing Timer 可以在这里很好地工作 (1+),但我对您的代码的另一个担忧是:

    manyFunctions();
    

    这个地方到底发生了什么?您是否正在调用大量耗时/消耗 CPU 的代码?如果是这样,您需要注意不要在主 Swing 线程 EDT 上调用它,而是在后台线程中调用它,但同时只在 EDT 上更新 Swing 组件。这可以通过使用 SwingWorker 来简化,您可以在此处阅读更多内容:Concurrency in Swing

    【讨论】:

      【解决方案2】:

      听起来你想看看swing timers。有了这些,您可以安排单个通话或定期进行通话。

      这样您还可以添加一个计时器,定期重置您的标签文本。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 2019-02-16
        • 1970-01-01
        • 2019-04-29
        • 2022-01-11
        • 2012-04-15
        • 1970-01-01
        相关资源
        最近更新 更多