当前位置: 首页 > 面试题库 >

如何在Java fx中每2秒更新一次标签框?

伯俊弼
2023-03-14
问题内容

我正在尝试在应用程序GUI中模拟基本恒温器。

我想每2秒用新的温度值更新一个标签盒值。

例如,我的初始温度将显示为68度,并每2秒更新为69、70等,直到75。

这是我用Java fx编写的一段代码。
controlpanel是带有标签框的te形式的对象。它只会将最终值更新为75。它不会每2秒更新一次。我写了一个方法暂停,导致2秒钟的延迟。所有标签均会更新为最终值,但不会每2秒更新一次。调试时,我可以看到这些值每2秒增加1。这段代码写在按钮的onClick事件中

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    int i=0;
    Timer asd = new Timer(1000,null);

    asd.setDelay(1000);

    while(i < 10)
    {
         jTextField1.setText(Integer.toString(i));
         i++;

         asd.start();
    }
 }

问题答案:

要使用Timer解决您的任务,您需要TimerTask使用代码实现并使用Timer#scheduleAtFixedRate方法重复运行该代码:

Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            System.out.print("I would be called every 2 seconds");
        }
    }, 0, 2000);

还要注意,调用任何UI操作都必须在Swing UI线程(或FX UI线程,如果使用JavaFX)上完成:

private int i = 0;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    Timer timer = new Timer();
    timer.scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    jTextField1.setText(Integer.toString(i++));
                }
            });
        }
    }, 0, 2000);
}

如果是JavaFX,则需要在“ FX
UI线程”上更新FX控件,而不是摆动一个。要实现该使用javafx.application.Platform#runLater方法而不是SwingUtilities



 类似资料:
  • 问题内容: 我有以下Python Tkinter代码,该代码每10秒重绘一次标签。我的问题是,对我而言,似乎是一遍又一遍地在旧标签上绘制新标签。因此,最终,几个小时后,将有数百个图纸重叠(至少从我的理解来看)。这会占用更多内存还是会引起问题? 在我的示例中,我仅使用一个标签。我知道可以用来更新标签甚至是文本。但是实际要做的是刷新标签(如表格),按钮和填充物的网格,以与可用的最新数据相匹配。 从我了

  • 问题内容: 我在Django中的应用程序 可以 创建一些 非常大的SQL查询。我目前使用一个对象,作为我需要的数据,然后使用一个,以返回要显示给用户的内容。 显然,我可以让用户等待一分钟,同时正在执行这些许多查询集并从数据库中提取查询,然后返回此单一HTML页面。 理想情况下,我想在需要时更新页面,例如: 这可能吗? 问题答案: 我最近发现HttpResponse可以是生成器: 这将逐步将结果返回

  • 我用基本的图形用户界面创建了一个小画板程序。我使用了画图组件方法。我想每毫秒更新正在绘制的图形。这样,用户可以在释放鼠标点击之前看到他们将要绘制的内容。例如,如果我正在绘制一个矩形,我想在绘制矩形时看到它。如果你不明白我到底在说什么,打开微软油漆,点击矩形工具。画一个矩形。注意它是如何持续更新的,而不是在释放鼠标后。我想一定有办法让它每毫秒更新我的图形。做这件事最好的方法是什么?抱歉,如果这是一个

  • 问题内容: 我有一个C#Windows窗体,其中包含几个文本框和按钮。它还具有显示sql表的datagrid视图。我创建了一个刷新按钮,使我可以刷新表,以便可以看到表中的更新项。我想知道有没有办法自行刷新表。就像每10秒一次,或者代替表格,也许每10秒就会自动加载或刷新整个表格吗? 问题答案: 使用Timer控件,它调用了UI线程,并且可以通过表单设计器使用该控件。

  • 我的应用程序的一个核心功能是它有一个持续的通知和一个每分钟更新的倒计时--即使应用程序被Android操作系统关闭。 首先,我使用一个服务来运行计时器并更新通知,但这是一个内存/电池占用。因此,我转而使用来完成计时器和重复警报,每60秒左右唤醒一次以更新通知: 什么是一种好方法来确保正在进行的通知至少每60秒更新一次呢?除了回到使用一个服务(啊!加上操作系统有时会在内存很少的设备上直接杀死服务)之

  • 问题内容: 我正在将一种布局转换为html; 一旦我在code / html / css中进行了更改,每次必须按F5。是否有任何简单的javascript / jQuery解决方案?即,在添加脚本之后,每5秒(或其他特定时间)重新加载整个页面。 问题答案: 如果必须在脚本中使用setTimeout,例如: