/*
*bem10jfx.blogspot.com
*/
package threadsjfx_2;
import javafx.application.Application;
import javafx.concurrent.Service;
import javafx.concurrent.Task;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ProgressBar;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.stage.Stage;
/**
*
* @author mabso
*/
public class ThreadsJfx_2 extends Application {
String ashStr;
int bx;
Text tx1, txt22, tx2, tx3, tx4;
Button btstart, btcancel, btrestart;
ProgressBar pg = new ProgressBar();
Service<Integer> service;
@Override
public void start(Stage primaryStage) {
Stage stage = new Stage();
Group gp = new Group();
Scene scene = new Scene(gp, 400, 400, Color.ALICEBLUE);
stage.setScene(scene);
tx1 = new Text("Title :");
txt22 = new Text("Value de retorno");
tx2 = new Text("0");
tx3 = new Text("Loop:");
tx4 = new Text("Progress :");
VBox vbcenter = new VBox(5);
VBox vbPote1 = new VBox(5);
HBox hbPote1 = new HBox(5);
vbcenter.getChildren().addAll(vbPote1, hbPote1);
vbcenter.layoutXProperty().bind(scene.widthProperty().divide(3.0));
vbcenter.layoutYProperty().bind(scene.heightProperty().divide(3.0));
vbPote1.getChildren().addAll(tx1, txt22, tx2, tx3, tx4, pg);
gp.getChildren().addAll(vbcenter);
btstart = new Button("Start");
btcancel = new Button("Cancelar");
btrestart = new Button("Restart");
hbPote1.getChildren().addAll(btstart, btrestart, btcancel);
btstart.setOnMouseClicked((MouseEvent event) -> {
service = new Service() {
@Override
protected Task<Integer> createTask() {
//retorno do taskstringk
Task<Integer> task = new Task<Integer>() {
@Override
protected Integer call() throws Exception {
System.out.println("Metodo.call() integer iniciado");
tx4.setText("Progress :INICIALIZADO");
for (int i = 0; i <= 10000; i++) {
System.out.println("cont" + i); //loop
Thread.sleep(10);
updateTitle("Title : aplication service ");
updateValue(i);
if (i % 50 == 0) {// multiplus de 50
updateMessage("Loop:" + i);
}
updateProgress(i, 10000);
}
tx4.setText("Progress :FINALIZADO");
System.out.println(".call()string finalizando");
return bx;// retorno nul
}
};
pg.progressProperty().bind(task.progressProperty());
tx1.textProperty().bind(task.titleProperty());
txt22.setText("Value");
tx2.textProperty().bind(task.valueProperty().asString());
tx3.textProperty().bind(task.messageProperty());
return task;
}
};
service.start();
});
btrestart.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
service.restart();
}
});
btcancel.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
service.cancel();
tx4.setText("Progress :Serv.Cancelado");
}
});
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}