Rotate an Ellipse

less than 1 minute read

The code has been modified slightly and now uploaded to the site.

Question

<— Return Home

FXEvent.java

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Ellipse;
import javafx.scene.transform.Rotate;

public class FXEvent extends Application{
    private Rotate rotate;
    private Button button;
    private int angle = -45;
    private Ellipse ellipse;
    @Override
    public void start(Stage stage){
        Pane root = new Pane();
        root.setPrefSize(500, 500);

        rotate = new Rotate(angle, 250, 250);
        ellipse = new Ellipse(250, 250, 50, 100);
        ellipse.setFill(Color.TRANSPARENT);
        ellipse.setStroke(Color.BLACK);
        ellipse.getTransforms().addAll(rotate);
        button = new Button("Rotate");
        // HBox box = new HBox(button);
        // box.setAlignment(Pos.BOTTOM_CENTER);
        // button.setLayoutX(200);
        // button.setLayoutY(450); // TODO: USE BORDER PANE!
        root.getChildren().addAll(ellipse, button);
        BorderPane bPane = new BorderPane();
        bPane.setCenter(root);
        bPane.setBottom(button);
        BorderPane.setAlignment(button, Pos.CENTER);

        ClickButtonHandler clickHandler = new ClickButtonHandler();
        button.setOnAction(clickHandler);
        // rotate.setOnAction(clickHandler);

        Scene scene = new Scene(bPane);
        stage.setScene(scene);
        stage.setTitle("Exercise15_02");
        stage.show();
    }

    private class ClickButtonHandler implements EventHandler<ActionEvent> {
        @Override
        public void handle(ActionEvent e){
            angle += 45;
            rotate = new Rotate(angle, 250, 250);
            System.out.println(angle);
            ellipse.getTransforms().add(rotate);
        }
    }
    public static void main(String[] args){
        launch(args);
    }
}

<— Return Home