以下是我的Task初始化
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();
}
});
Run Code Online (Sandbox Code Playgroud)
这是任务编码
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;
}
};
}
Run Code Online (Sandbox Code Playgroud)
现在,第一次单击 btn 按钮时,任务正常运行,但随后单击时,不会调用任务。
我希望每次点击时都调用任务。请建议我如何修改我的代码来做到这一点......
请参阅JavaDocs。
与 FutureTask 一样,Task 是一次性类,不能重用。
每次按下按钮时,您都需要创建一个新任务。
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();
}
});
Run Code Online (Sandbox Code Playgroud)