O código da classe FXMLController.java.
package main.java.br.com.cursojavanow;
import javafx.animation.Animation;
import javafx.animation.Interpolator;
import javafx.animation.RotateTransition;
import javafx.beans.binding.When;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.util.Duration;
import java.net.URL;
import java.util.ResourceBundle;
public class FXMLController implements Initializable {
@FXML
private StackPane stackPane;
@FXML
private Text text2;
private RotateTransition rotate;
@Override
public void initialize(URL url, ResourceBundle rb) {
rotate = new RotateTransition(Duration.millis(2500), stackPane);
rotate.setToAngle(360);
rotate.setFromAngle(0);
rotate.setInterpolator(Interpolator.LINEAR);
rotate.statusProperty().addListener(
(observableValue, oldValue, newValue) -> {
text2.setText("Was " + oldValue + ", Now " + newValue);
});
text2.strokeProperty().bind(new When(rotate.statusProperty()
.isEqualTo(Animation.Status.RUNNING))
.then(Color.GREEN).otherwise(Color.RED));
}
@FXML
private void handleMouseClick(MouseEvent mouseEvent) {
if (rotate.getStatus().equals(Animation.Status.RUNNING)) {
rotate.pause();
} else {
rotate.play();
}
}
}
A classe controller implementa Initializable e sobrescreve o método initialize(), o qual invoca para você o runtime. Importante, o campo privado stackPane e text2 estão anotados com @FXML. A anotação @FXML associadas aos nomes das variáveis na classe controller representa os objetos descritos no arquivo FXML. Não há código na classe controller para criar esses objetos porque o FXMLLoader faz isso por você.
O método initialize() faz três coisas. Primeiro, cria e configura o RotateTransition e aplica aos node stackPane. Segundo, é adicionado um change listener para o estado da propriedade de transição. Terceiro, uma expressão bind para o text2 lança propriedades específicas baseadas em cor no estado de transição da rotação.
A anotação @FXML com handleMouseClick() indica que o arquivo FXML tem a configuração do evento (event handler). Esse mouse clica no evento e inicia e para a animação da transição de rotação.
Fonte: The Definitive Guide to Modern Java Clients with JavaFX





Deixe um comentário