我正在尝试创建一个显示四种颜色的圆圈,其中轮子的每个四分之一都有不同的颜色,并且有一个按钮,用于在按下时将轮子的颜色向右旋转 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)
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)
结果 :
| 归档时间: |
|
| 查看次数: |
239 次 |
| 最近记录: |