用JavaFX模拟一个交通信号灯

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

代码如下:

package javaseniorprograme;

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
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.scene.text.Text;
import javafx.stage.Stage;

/**
 * 交通信号灯
 * @author 李安国
 */
public class Exercise16_03 extends Application{
    @Override
    public void start(Stage stage){
        // 创建一个矩形,初始化位置
        Rectangle rec = new Rectangle(215,10,70,200);
        rec.setStroke(Color.BLACK);
        rec.setFill(Color.WHITE); 
        // 创建三个圆形,初始化位置
        Circle c1 = new Circle(250,45,30,Color.WHITE);
        Circle c2 = new Circle(250,110,30,Color.WHITE);
        Circle c3 = new Circle(250,175,30,Color.WHITE);
        c1.setStroke(Color.BLACK);
        c2.setStroke(Color.BLACK);
        c3.setStroke(Color.BLACK);
        // 创建三个单选按钮
        RadioButton rb1 = new RadioButton();
        RadioButton rb2 = new RadioButton();
        RadioButton rb3 = new RadioButton();
        
        ToggleGroup tg = new ToggleGroup();
        rb1.setToggleGroup(tg);
        rb2.setToggleGroup(tg);
        rb3.setToggleGroup(tg);
        rb1.setSelected(true);
        
        rb1.setOnMouseClicked(e->{
            c1.setFill(Color.RED); 
            c1.setStroke(Color.WHITE); 
            c2.setFill(Color.WHITE);
            c3.setFill(Color.WHITE);
            c2.setStroke(Color.BLACK);
            c3.setStroke(Color.BLACK);
        });
        rb2.setOnMouseClicked(e->{
            c2.setFill(Color.YELLOW); 
            c2.setStroke(Color.WHITE); 
            c1.setFill(Color.WHITE);
            c3.setFill(Color.WHITE);
            c1.setStroke(Color.BLACK);
            c3.setStroke(Color.BLACK);
        });
        rb3.setOnMouseClicked(e->{
            c3.setFill(Color.GREEN); 
            c3.setStroke(Color.WHITE); 
            c2.setFill(Color.WHITE);
            c1.setFill(Color.WHITE);
            c2.setStroke(Color.BLACK);
            c1.setStroke(Color.BLACK); 
        });
        // 创建三个文本
        Text t1 = new Text("Red");
        Text t2 = new Text("Yellow");
        Text t3 = new Text("Green");
       // 创建一个HBox 
        HBox hbox = new HBox();
        hbox.setSpacing(10); 
        hbox.setAlignment(Pos.CENTER); 
        hbox.getChildren().addAll(rb1,t1,rb2,t2,rb3,t3);
        // 创建一个Pane
        Pane pa = new Pane();
        pa.getChildren().addAll(rec,c1,c2,c3);
        // 创建一个BorderPane
        BorderPane pane = new BorderPane();
        pane.setCenter(pa); 
        pane.setBottom(hbox); 
        Scene scene = new Scene(pane,500,300);
        stage.setTitle("Exercise16_03");
        stage.setScene(scene);
        stage.show();
    }
    /**
     * @param args
     * main方法
     */
    public static void main(String[] args){
        Application.launch(args); 
    }
}

posted @ 2020-04-18 20:28  AngoLi  阅读(837)  评论(0编辑  收藏  举报