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);
}
}
运行结果