gpt4 book ai didi

javafx-2 - javafx 后台任务未运行多次

转载 作者:行者123 更新时间:2023-12-02 04:32:39 24 4
gpt4 key购买 nike

以下是我的任务初始化

        final Task<Void> vt=voiceTask();
Button btn = new Button();
btn.setText("Say");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
new Thread(vt).start();
}
});

这是任务编码

public Task<Void> voiceTask() {
return new Task<Void>(){
@Override
protected Void call() throws Exception {
HelloWorld hw=new HelloWorld();// HelloWorld is simple .java class getting voice through sphinx
updateMessage(hw.Hello());
return null;

}

};
}

现在,第一次单击 btn 按钮时,任务正常运行,但后续单击时,任务不会被调用。

我希望每次点击时都调用任务。请建议我如何修改我的代码来做到这一点......

最佳答案

请参阅JavaDocs

As with FutureTask, a Task is a one-shot class and cannot be reused.

每次按下按钮时,您都需要创建一个新任务。

    final Button btn = new Button();
btn.setText("Say");
btn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
final Task<Void> vt=voiceTask();
vt.setOnSucceeded(new EventHandler<WorkerStateEvent>() {
@Override
public void handle(WorkerStateEvent event) {
btn.setDisable(false);
}
});
btn.setDisable(true);
new Thread(vt).start();
}
});

关于javafx-2 - javafx 后台任务未运行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22694117/

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