ProgressBar 不适用于 fxml 文件和控制器

2023-11-30

所以我用了这个link设置我的进度栏,当我运行此代码时它工作得非常好。

但是,根据我的设置,我似乎无法让进度条实际更新...progressBar.getProgress() 实际上获得了正确的进度,但 UI 没有更新。这是到目前为止的代码:

主程序.java

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            FXMLLoader loader = new FXMLLoader(Main.class.getResource("ProgressBarLayout.fxml"));
            AnchorPane root = (AnchorPane) loader.load();
            Scene scene = new Scene(root);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

ProgressBarController.java

public class ProgressBarController {
    private Task copyWorker;

    @FXML
    private ProgressBar progressBar;

    @FXML
    private void onButtonClick() {
        progressBar = new ProgressBar(0);
         progressBar.setProgress(0);
         copyWorker = createWorker();

         progressBar.progressProperty().unbind();
         progressBar.progressProperty().bind(copyWorker.progressProperty());

         new Thread(copyWorker).start();
    }


    public Task createWorker() {
        return new Task() {
            @Override
            protected Object call() throws Exception {
                for (int i = 0; i < 10; i++) {
                    Thread.sleep(2000);
                    updateMessage("2000 milliseconds");
                    updateProgress(i + 1, 10);

                    System.out.println(progressBar.getProgress());
                }
                return true;
            }
        };
    }
}

ProgressBarLayout.fxml

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane prefHeight="257.0" prefWidth="434.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.ProgressBarController">
   <children>
      <ProgressBar fx:id="progressBar" layoutX="54.0" layoutY="103.0" prefHeight="51.0" prefWidth="326.0" progress="0.0" />
      <Button layoutX="201.0" layoutY="182.0" mnemonicParsing="false" onAction="#onButtonClick" text="OK" />
   </children>
</AnchorPane>

在你的控制器中你做:

    progressBar = new ProgressBar(0);

这意味着它将创建一个新的 ProgressBar 实例,并且不会再使用 FXML 中的 ProgressBar。 只需删除这一行,它应该可以工作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ProgressBar 不适用于 fxml 文件和控制器 的相关文章

随机推荐

  • 如何使用 JavaScript 停止文件上传事件

    当我上传的文件超过 5mb 或者我的文件扩展名不是时 我想停止文件上传事件 jpg or png 我找到了一个代码 但是当我尝试上传无效的文件类型时 它只会提醒我上传了错误的文件 但不会取消该事件 这是代码
  • pxssh 抛出文件结尾 (EOF)。异常样式平台异常

    我在使用 pxssh 模块时遇到问题 我的代码如下 try ssh handle pxssh pxssh timeout None ssh handle logfile sys stdout ssh handle login host us
  • Kotlin函数用于获取子字符串的开始和结束索引

    我想知道是否有一些方法或方法组合可以获得这些结果 我的意思是你有一个字符串 ex Hello world how are you 我想实现以下功能 获取子字符串的开始和结束索引 在那根弦里 前任 substring world 起始索引为
  • 如何对小数位进行分组?

    我想要得到x 1 234 567 890 098 765 432 1 include
  • 更改 Chrome 状态栏中显示的 URL

    当我将鼠标悬停在 Chrome 中的某个网址上时 该网址会显示在 Chrome 状态栏中 就我而言 这会导致丑陋的 javascript bla bla bla 引用 当您将鼠标悬停在链接上时 有什么方法可以更改状态栏的内容吗 Thanks
  • 如何设置静态资源的依赖属性?

    我试图解决我无法指定动态值的事实ConverterParameter 请参阅我的其他问题 了解为什么我需要将动态值绑定到ConverterParameter 我不喜欢当前发布的解决方案 因为它们都需要我认为对我的视图模型进行不必要的更改 为
  • Tumblr 音频播放器无法通过无限滚动加载

    我在这个 tumblr 上实现了无限滚动和砌体 检查链接的修订版 音频播放器不会出现在通过无限滚动加载的帖子中 而是显示文本 需要 Flash 9 才能收听音频 Inspire Well tumblr 主题 我无法发布另一个超链接 但你可以
  • KnpMenuBundle - 发送选项并在 Twig 中使用它们

    我在 KnpMenuBundle 的导航栏菜单上写下了最后几天的内容 我只想简单地给模板一些参数 然后对其做出反应 是否可以 我试过这个 menu gt addChild Registration array route gt fos us
  • 如何在Python中替换列表中的单引号

    我有一个清单 my list 3 45 12 6 该列表包含单引号和双引号以及项目值 如何替换每个项目中的单引号或双引号 我尝试了下面 但结果是一样的 my list i replace for i in my list 您的列表不包含任何
  • 在 C++ 中,表达式“*pointer++”如何工作? [复制]

    这个问题在这里已经有答案了 include
  • htaccess自动检测域名

    我制作了自动创建子域的脚本 htaccess 工作正常 但问题是 在新域上安装时我需要手动更改域名 我想在htaccess中自动检测域名 可以吗 因此 当添加另一台服务器或新域时 无需再次更改域根htaccess 域根 htaccess 是
  • 类型错误:EventEmitter 不是新 MapboxGeocoder 的构造函数

    使用Vue 3 typescript vite 已经用Vite Vue 3 typescript搭建了项目 使用谷歌地图时遇到麻烦 因为它需要付费 然后尝试了 Mapbox 地图部分工作正常 但在添加 MapboxGeocoder 时显示错
  • iOS 快速发布请求

    所以我想创建一个具有以下输出的发布请求 user gt email gt email protected password gt FILTERED password confirmation gt FILTERED 相反 我得到 user
  • PHP:“遇到格式不正确的数值”

  • Google App Engine JDO 使持久延迟

    我的 Google App Engine JDO 实现存在问题 我无法弄清楚 文档 http code google com intl sv SE appengine docs java datastore jdo creatinggett
  • 无法通过 Spark 连接到 Mongo DB

    我正在尝试通过 Apache Spark master 从 Mongo DB 读取数据 我为此使用了 3 台机器 M1 上面有一个 Mongodb 实例 M2 带有 Spark Master 带有 Mongo 连接器 在其上运行 M3 带有
  • 为什么按这个顺序列出 monad 组合?

    我正在阅读有关列表单子的内容并遇到 1 2 gt gt n gt a b gt gt ch gt return n ch 它产生 1 a 1 b 2 a 2 b 我是这样理解的 隐式括号是 1 2 gt gt n gt a b gt gt
  • 通过拆分字段值来重塑文档

    假设我们有一组原始数据 person David age 102 person Max age 8 我们希望将该集合转换为 age 102 age 8 仅使用 mongo d 引擎 如果所有人名或年龄都具有相同的长度 substr 可以完成
  • 用于测试的干净的轻量级邮件服务器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要一个邮件服务器来测试发送和接收电子邮件的应用程序 所以应该 重量轻 体积小 免费 如免费啤酒 首选开源 支持Win XP 支持SMTP IMA
  • ProgressBar 不适用于 fxml 文件和控制器

    所以我用了这个link设置我的进度栏 当我运行此代码时它工作得非常好 但是 根据我的设置 我似乎无法让进度条实际更新 progressBar getProgress 实际上获得了正确的进度 但 UI 没有更新 这是到目前为止的代码 主程序