JavaFX实验——交通信号灯

编写一个程序来模拟交通信号灯。程序可以让用户从红、黄、绿三种颜色灯中选择一种。当选择一个按钮后,相应的灯被打开。程序开始时所有的灯都是不亮的。

代码如下:

package sample;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        BorderPane root = new BorderPane();
        Pane pane = new Pane();
        Button Red = new Button("Red");
        Button Yellow = new Button("Yellow");
        Button Green = new Button("Green");
        HBox hBox = new HBox();
        hBox.setSpacing(10);
        hBox.setAlignment(Pos.CENTER);
        hBox.getChildren().addAll(Red, Yellow, Green);
        Rectangle r = new Rectangle(115, 10, 70, 190);
        r.setStroke(Color.BLACK);
        r.setFill(Color.WHITE);
        Circle cR = new Circle(150, 45, 25, Color.WHITE);
        Circle cY = new Circle(150, 105, 25, Color.WHITE);
        Circle cG = new Circle(150, 165, 25, Color.WHITE);
        cR.setStroke(Color.BLACK);
        cY.setStroke(Color.BLACK);
        cG.setStroke(Color.BLACK);
        Red.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                cR.setFill(Color.RED);
                cY.setFill(Color.WHITE);
                cG.setFill(Color.WHITE);
            }
        });
        Yellow.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                cR.setFill(Color.WHITE);
                cY.setFill(Color.YELLOW);
                cG.setFill(Color.WHITE);
            }
        });
        Green.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent mouseEvent) {
                cR.setFill(Color.WHITE);
                cY.setFill(Color.WHITE);
                cG.setFill(Color.GREEN);
            }
        });
        pane.getChildren().addAll(r, cR, cY, cG);
        root.setCenter(pane);
        root.setBottom(hBox);
        primaryStage.setTitle("Traffic Lights");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

运行结果:
JavaFX实验——交通信号灯_第1张图片
JavaFX实验——交通信号灯_第2张图片
JavaFX实验——交通信号灯_第3张图片
JavaFX实验——交通信号灯_第4张图片

你可能感兴趣的:(JavaFX实验——交通信号灯)