gpt4 book ai didi

JavaFX 窗口未立即打开

转载 作者:行者123 更新时间:2023-12-02 11:28:34 25 4
gpt4 key购买 nike

我已经在 J​​avaFX 中为我正在解决的问题创建了一个可视化工具,目前我可以在应用程序中的计算完成后显示它,但我希望首先打开窗口然后运行计算,这样我就可以在计算过程中对可视化进行动画处理。

这是用于创建问题实例、显示可视化工具并执行计算的代码:

public static void run(Visualizer v) {
readInput();
if (v != null) {
v.resizeCanvas(rectangles);
v.drawAllRectangles(rectangles);
v.show();
}
calculateArea();

System.out.println(totalArea);
}

Visualizer 类扩展了 javafx.application.Application 并利用 JavaFX Canvas。 calculateArea() 只是运行一个静态方法来执行一些计算。

当我运行程序时当前发生的情况是:

  1. 它等待 stdin 上的输入
  2. 计算已运行
  3. 显示可视化效果

我想要什么:

  1. 它等待 stdin 上的输入
  2. 显示可视化效果
  3. 计算已运行

因此,由于某种原因,即使我在 calculateArea() 之前调用 v.show(),可视化的显示也会延迟。

我的第一个预感是在新线程中运行计算,但根据 the documentation “JavaFX 场景图代表 JavaFX 应用程序的图形用户界面,它不是线程安全的,只能从 UI 线程(也称为 JavaFX 应用程序线程)访问和修改。”

我尝试在 v.show() 之后放置一个 Thread.sleep(3000),结果我的程序在运行之前只等待了 3 秒 calculateArea() 后跟正在显示的窗口。

感谢您的任何意见!

最佳答案

您应该在应用程序 start() 方法中启动的单独线程(如@Selim 建议)中调用计算方法。

如果您的计算方法直接更改屏幕上的图形内容(顺便说一句,它不应该这样做...),您需要将此图形代码(而不是计算本身)传递给 Platform.runLater() .

关于JavaFX 窗口未立即打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49447549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com