当前位置: 首页 > 知识库问答 >
问题:

JavaFX更新标签(绑定)中的计时器

徐隐水
2023-03-14

我想在我的应用程序中添加一个时钟,它告诉你已经做了多长时间的任务。为了简化它,我包含了一个计数器,它在新线程中每秒递增一次,并用计数器号更新标签“Set Timer”。为此,我在我的.fxml文件中有一个标签fx:id=“settimer”,并将其导入到我的类中。

 @FXML
    private Label setTimer;
    SimpleStringProperty text = new SimpleStringProperty("undefined");
public class MyTask extends TimerTask {
        @Override
        public void run() {
            counter++;
            text.set(Integer.toString(counter));
        }
    }
@Override
    public void initialize(URL url, ResourceBundle resourceBundle) {
        MyTask myTask = new MyTask();
        Timer timer = new Timer(true);
        timer.scheduleAtFixedRate(myTask, 0 , 1000);
        setTimer.textProperty().bind(text);
    }

我试过很多方法来解决我的问题,但我还没有找到正确的方法。我对我想做什么的想法应该很清楚,如果有人能帮助我,我会很高兴的。我的问题是更新GUI中计数器的更改。它不一定要以我认为的方式解决,只需要一个关于如何最好地实现它的技巧。

谢谢。

共有1个答案

松献
2023-03-14

好吧,我的评论太长了。这就是我想做的。

  1. 在加载的应用程序上启动秒表
  2. 创建每隔一段时间就会启动自己的新线程。
  3. 在那里,从秒表中以秒为单位获取时间(sw.gettime(timeuntis.seconds))。如果需要,请将其转换为小时和分钟,如此SO POST
  4. 所示
  5. 然后,使用platform.runlater(new Runnable(){/*access UI元素并在此处写入时间*/})将时间写入UI;
 类似资料:
  • 问题内容: 我在这段代码上遇到了麻烦。 我正在使用一个随机数启动一个计时器,并且我想每秒倒数一次更新JLabel。但是我还没有弄清楚该怎么做,因为计时器触发的唯一侦听器位于它的末尾(我知道)。 这是代码: 问题答案: 我不太了解您为什么使用随机数的问题,但以下是一些观察结果: 我想每秒钟更新一次带有倒计时的JLabel。 然后,您需要将计时器设置为每秒触发一次。因此,计时器的参数是1000,而不是

  • 我想绑定JavaFX与值。 我试过了,例如。 或 但我总是得到NullPointerException。 我怎么才能修好它?

  • 我是java和javaFx的新手,我正在尝试处理一个需要在标签上显示一些实时传入数据的项目。 我将我的标签绑定到服务对象的消息,该消息不断使用传入数据更新其消息。但是,消息正在更新,但标签变为空白。 没有弹出错误,也没有捕获到异常。任何人都可以指出标签空白的原因,而不是随服务一起更新。消息以及如何修复它?提前谢谢。 下面是我正在尝试做的一个简化示例,其中数据源被随机数列表替换。 控制器类:我将sc

  • 问题内容: 是否可以将JavaFX Slider的Double-Value绑定到Label?我想得到这样的东西: 谢谢您的帮助。 问题答案: 假设您有一个返回a 的属性访问器方法,则可以执行 如果要使用Formatting String格式化字符串 ,请执行以下操作

  • 我想做的是: 我有一个JavaFX窗口,我通过拖动不断改变它的宽度和高度。然后的文本具有以下格式: 例子: 我想使用绑定,而不是使用2(两)个ChangeListeners来实现这一点。 我也读过这个问题JavaFX绑定到多个属性

  • 我在JavaFX应用程序中使用MVP。 资源: 控制器: 看法 在我的InfoStageView中,只需初始化我的标签和样式我的视图。 如何将我的超链接绑定到我的标签。我尝试了一些方法,但没有成功。我的StringProperty不可点击,但很容易绑定。 我的目标:我想打开带有链接的浏览器。