尝试用javafx中的按钮使4色圆圈旋转

Car*_*i C 5 java javafx

我正在尝试创建一个显示四种颜色的圆圈,其中轮子的每个四分之一都有不同的颜色,并且有一个按钮,用于在按下时将轮子的颜色向右旋转 90 度。

这是我到目前为止所拥有的代码。我的按钮和圆圈显示正常,但按下按钮时无法使其旋转。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.layout.FlowPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Arc;
import javafx.scene.shape.ArcType;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import java.util.concurrent.TimeUnit;

public class four_color_wheel extends Application {
    private Group circle;
    private FlowPane pane;
    private Button rotate;
    private Arc blueArc, greenArc, yellowArc, redArc;



    public void start(Stage primaryStage) {
    

        // Blue Arc
        Arc blueArc = new Arc(200, 200, 150, 150, 0, 90);
        blueArc.setType(ArcType.ROUND);
        blueArc.setStroke(Color.BLUE);
        blueArc.setFill(Color.BLUE);
    
        // Green Arc
        Arc greenArc = new Arc(200, 200, 150, 150, 90, 90);
        greenArc.setType(ArcType.ROUND);
        greenArc.setStroke(Color.GREEN);
        greenArc.setFill(Color.GREEN);
    
        // Yellow Arc
        Arc yellowArc = new Arc(200, 200, 150, 150, 180, 90);
        yellowArc.setType(ArcType.ROUND);
        yellowArc.setStroke(Color.YELLOW);
        yellowArc.setFill(Color.YELLOW);

        // Red Arc
        Arc redArc = new Arc(200, 200, 150, 150, 270, 90);
        redArc.setType(ArcType.ROUND);
        redArc.setStroke(Color.RED);
        redArc.setFill(Color.RED);

        Group circle = new Group(blueArc, greenArc, yellowArc, redArc);

        Button rotate = new Button("Rotate Right");
        rotate.setOnAction(this::processButtonPress);
    
        FlowPane pane = new FlowPane(circle, rotate);
        pane.setAlignment(Pos.CENTER);
        pane.setHgap(20);
        pane.setStyle("-fx-background-color: GRAY");
    
        Scene scene = new Scene(pane, 300, 100);
        primaryStage.setTitle("Four-Color Wheel");
        primaryStage.setScene(scene);
        primaryStage.show();
     
    
    
    } 
    
    
 public void processButtonPress(ActionEvent event)
    {
        Group circle = new Group(blueArc, greenArc, yellowArc, redArc);
        circle.setRotate(90);
    }
}
Run Code Online (Sandbox Code Playgroud)

Gio*_*ras 4

1-许多局部变量是隐藏字段

2-请遵守java命名约定

3-如果你想旋转某物,你需要将其当前旋转添加到角度中

public class FourColorWheel extends Application {

private Group circle;
private FlowPane pane;
private Button rotate;
private Arc blueArc, greenArc, yellowArc, redArc;

public void start(Stage primaryStage) {

    // Blue Arc
    blueArc = new Arc(200, 200, 150, 150, 0, 90);
    blueArc.setType(ArcType.ROUND);
    blueArc.setStroke(Color.BLUE);
    blueArc.setFill(Color.BLUE);

    // Green Arc
    greenArc = new Arc(200, 200, 150, 150, 90, 90);
    greenArc.setType(ArcType.ROUND);
    greenArc.setStroke(Color.GREEN);
    greenArc.setFill(Color.GREEN);

    // Yellow Arc
    yellowArc = new Arc(200, 200, 150, 150, 180, 90);
    yellowArc.setType(ArcType.ROUND);
    yellowArc.setStroke(Color.YELLOW);
    yellowArc.setFill(Color.YELLOW);

    // Red Arc
    redArc = new Arc(200, 200, 150, 150, 270, 90);
    redArc.setType(ArcType.ROUND);
    redArc.setStroke(Color.RED);
    redArc.setFill(Color.RED);

    circle = new Group(blueArc, greenArc, yellowArc, redArc);

    rotate = new Button("Rotate Right");
    rotate.setOnAction(this::processButtonPress);

    pane = new FlowPane(circle, rotate);
    pane.setAlignment(Pos.CENTER);
    pane.setHgap(20);
    pane.setStyle("-fx-background-color: GRAY");

    Scene scene = new Scene(pane, 400, 400);
    primaryStage.setTitle("Four-Color Wheel");
    primaryStage.setScene(scene);
    primaryStage.show();

}

public void processButtonPress(ActionEvent event) {

    circle.setRotate(circle.getRotate() + 90);
}
}
Run Code Online (Sandbox Code Playgroud)

结果 :

在此输入图像描述