Java黑皮书16.2(选择几何图形)

Java黑皮书16.2(选择几何图形)

package sample;

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
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.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Ellipse;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        StackPane stackPane = new StackPane();
        Circle circle = new Circle(100, 100, 100);
        circle.setStroke(Color.BLACK);
        circle.setFill(Color.WHITE);

        Rectangle rectangle = new Rectangle(10, 10, 100, 100);
        rectangle.setStroke(Color.BLACK);

        Ellipse ellipse = new Ellipse(50, 50, 100, 50);
        ellipse.setStroke(Color.BLACK);

        stackPane.setStyle("-fx-border-color: gray");
        stackPane.getChildren().add(circle);

        RadioButton radioButton_Circle = new RadioButton("Circle");
        RadioButton radioButton_Rectangle = new RadioButton("Rectangle");
        RadioButton radioButton_Ellipse = new RadioButton("Ellipse");
        CheckBox checkBox_Fill = new CheckBox("Fill");

        ToggleGroup toggleGroup = new ToggleGroup();
        radioButton_Circle.setToggleGroup(toggleGroup);
        radioButton_Circle.setSelected(true);
        radioButton_Rectangle.setToggleGroup(toggleGroup);
        radioButton_Ellipse.setToggleGroup(toggleGroup);

        HBox hBox = new HBox(4);
        hBox.getChildren().addAll(radioButton_Circle, radioButton_Rectangle, radioButton_Ellipse, checkBox_Fill);
        hBox.setAlignment(Pos.CENTER);

        BorderPane borderPane = new BorderPane();
        borderPane.setCenter(stackPane);
        borderPane.setBottom(hBox);

        Scene scene = new Scene(borderPane, 600, 300);
        primaryStage.setTitle("选择几何图形");
        primaryStage.setScene(scene);
        primaryStage.show();

        radioButton_Circle.setOnAction(e -> {
            stackPane.getChildren().clear();
            stackPane.getChildren().add(circle);
            if (checkBox_Fill.isSelected()) circle.setFill(Color.BLACK);
            else circle.setFill(Color.WHITE);
        });
        radioButton_Rectangle.setOnAction(e -> {
            stackPane.getChildren().clear();
            stackPane.getChildren().add(rectangle);
            if (checkBox_Fill.isSelected()) rectangle.setFill(Color.BLACK);
            else rectangle.setFill(Color.WHITE);
        });
        radioButton_Ellipse.setOnAction(e -> {
            stackPane.getChildren().clear();
            stackPane.getChildren().add(ellipse);
            if (checkBox_Fill.isSelected()) ellipse.setFill(Color.BLACK);
            else ellipse.setFill(Color.WHITE);
        });
        checkBox_Fill.setOnAction(e -> {
            if (checkBox_Fill.isSelected()) {
                circle.setFill(Color.BLACK);
                rectangle.setFill(Color.BLACK);
                ellipse.setFill(Color.BLACK);
            } else {
                circle.setFill(Color.WHITE);
                rectangle.setFill(Color.WHITE);
                ellipse.setFill(Color.WHITE);
            }
        });
    }

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

运行结果在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值