gpt4 book ai didi

javafx - 标签不更新任务进度

转载 作者:行者123 更新时间:2023-11-30 02:18:48 25 4
gpt4 key购买 nike

我正在遵循 javafx 中的 Task 的一个简单示例,其中 Label 文本根据任务进度进行更新。

由于某种原因,Label 不显示进度,而是从 -1 跳转到 1(最终值)。

感谢您的帮助!

public class MultithreadingMain extends Application {
@Override
public void start(Stage primaryStage) throws Exception
{
HBox root = new HBox();

Button button = new Button("Go");

Task<Integer> task = new Task<Integer>() {
@Override
public Integer call() throws InterruptedException
{
int max = 100;
for(int i=0; i<max; i++)
{
Thread.sleep(50);
updateProgress(i+1,max);
}
System.out.println("Done");
return 0;
}
};

button.setOnAction(e -> {
Thread t = new Thread(task);
t.run();
});

Label label = new Label("");
label.textProperty().bind(task.progressProperty().asString());

root.getChildren().add(button);
root.getChildren().add(label);

Scene scene = new Scene(root, 400,400);
primaryStage.setTitle("Multithreading in java fx");
primaryStage.setScene(scene);
primaryStage.show();
}

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

}

最佳答案

您没有正确使用 Thread Thread.run 您只需执行代码而不创建新线程。更改t.run();t.start();

关于javafx - 标签不更新任务进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47488553/

25 4 0