private void run(ActionEvent event) throws InterruptedException {
button.setDisabled(true);
Thread.sleep(3000);
button.setDisabled(false);
}
這是我的代碼。 我想在Thread.sleep()
的地方做點什麼,而Button
被禁用。 但它一次做所有事情。 有人可以幫忙嗎?讓Eventhandler立即行動?
private void run(ActionEvent event) throws InterruptedException {
button.setDisabled(true);
Thread.sleep(3000);
button.setDisabled(false);
}
這是我的代碼。 我想在Thread.sleep()
的地方做點什麼,而Button
被禁用。 但它一次做所有事情。 有人可以幫忙嗎?讓Eventhandler立即行動?
這是一個在不同線程上使用Task
來執行操作的示例。
Button b = new Button("Button!");
b.setOnAction(e -> {
b.setDisable(true);
Task<Void> task = new Task<Void>(){
@Override
protected Void call() throws Exception {
Platform.runLater(() -> b.setText("Modified text")); // Use Platform.runLater here to modify the scene graph
Thread.sleep(3000);
return null;
}
};
task.setOnSucceeded(v -> {
System.out.println("Succeed");
b.setText("Button!");
b.setDisable(false);
});
Thread thread = new Thread(task);
thread.setDaemon(true);
thread.start();
});
什麼是您要執行的「某事」?它應該運行在一個單獨的線程?它會持續多久? – DVarga