【问题标题】:JavaFx Running a While Loop Parallel to the GUIJavaFx 运行与 GUI 并行的 While 循环
【发布时间】:2017-01-12 01:59:16
【问题描述】:

所以,我正在创建一个 JavaFx 游戏应用程序,需要在 GUI 打开并运行时运行一个 while 循环。这很容易使用 swing 实现,但是使用 JavaFx 应用程序必须在我的任何代码实现之前关闭。有没有办法让循环与 GUI 并行运行,或者我必须恢复到摇摆?是否可以通过一个事件触发循环并且仍然让应用程序响应其他事件?

【问题讨论】:

  • “但是使用 JavaFx,应用程序必须在我的任何代码实现之前关闭” 请您重新表述一下。这似乎没有多大意义,因为您通常不会在运行时实现某些东西。此外,还不清楚您面临的确切问题是什么(即为什么您认为并行运行的东西在 javafx 中不起作用;到底出了什么问题?)。

标签: java swing user-interface javafx


【解决方案1】:

我猜你正在寻找 JavaFX 中的并发任务。创建一个新任务来运行循环并在新线程中执行它。

import javafx.concurrent.Task;

Task task = new Task<Void>() {
    @Override public Void call() {
        static final int max = 1000000;
        for (int i=1; i<=max; i++) {
            if (isCancelled()) {
               break;
            }
            updateProgress(i, max);
        }
        return null;
    }
};

new Thread(task).start();

参考 - https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm

如果您需要在任务完成后采取任何操作,请将它们添加到 Task 的 On Succeeded 方法中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多