Salve a tutti, spero stiate bene…. Avrei questo problema con la suddetta funzione. Quando premo un bottone della mia interfaccia grafica si avvia la funzione “handleButtonAction” che cancella, con successo, il servizio avviato in “initialize” ma nonostante cio' il setOnCancelled non parte e non mi spiego il perchè.. in giro non sono riuscito a trovare nessun esempio di aiuto… confido in voi e ringrazio chi proverà ad aiutarmi. Ecco il codice…
package provaoncancelled;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
/**
*
* @author kevin
*/
public class FXMLDocumentController implements Initializable {
@FXML
private Label label;
@FXML
private Button button;
ServiceX service;
@FXML
private void handleButtonAction(ActionEvent event) {
service.cancel();
service.setOnCancelled(e->{
System.out.println("Cancellato");
});
}
@Override
public void initialize(URL url, ResourceBundle rb) {
service = new ServiceX();
service.start();
}
}
Qui invece la classe ServiceX
package provaoncancelled;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
/**
*
* @author kevin
*/
public class ServiceX extends Service<Void>{
public ServiceX() {
}
@Override
protected Task<Void> createTask() {
return new Task(){
@Override
protected Object call() throws Exception {
for(int c = 0; c < 100000; c++){
if(isCancelled())
break;
System.out.println(c);
}
return 0;
}
};
}
}