diff --git a/_02/src/Calculator.java b/_02/src/Calculator.java new file mode 100644 index 0000000..5d962a1 --- /dev/null +++ b/_02/src/Calculator.java @@ -0,0 +1,100 @@ +import javafx.application.Application; +import javafx.geometry.Insets; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + +public class Calculator extends Application { + private TextField display; + private double result = 0; + private String lastCommand = "="; + private boolean start = true; + + @Override + public void start(Stage primaryStage) { + // 创建显示区域 + display = new TextField("0"); + display.setEditable(false); + display.setPrefColumnCount(15); + + // 创建按钮 + GridPane grid = new GridPane(); + grid.setPadding(new Insets(10)); + grid.setHgap(10); + grid.setVgap(10); + + // 按钮布局 + String[][] buttonLayout = { + {"7", "8", "9", "/"}, + {"4", "5", "6", "*"}, + {"1", "2", "3", "-"}, + {"0", ".", "=", "+"} + }; + + for (int i = 0; i < 4; i++) { + for (int j = 0; j < 4; j++) { + Button button = new Button(buttonLayout[i][j]); + button.setOnAction(e -> processButtonPress(button.getText())); + grid.add(button, j, i); + } + } + + // 创建主布局 + VBox root = new VBox(); + root.setPadding(new Insets(10)); + root.setSpacing(10); + root.getChildren().addAll(display, grid); + + // 创建场景 + Scene scene = new Scene(root, 300, 300); + + // 设置舞台 + primaryStage.setTitle("简易计算器"); + primaryStage.setScene(scene); + primaryStage.show(); + } + + private void processButtonPress(String command) { + if (command.matches("[0-9]")) { + if (start) { + display.setText(command); + start = false; + } else { + display.setText(display.getText() + command); + } + } else if (command.equals(".")) { + if (start) { + display.setText("0."); + start = false; + } else if (!display.getText().contains(".")) { + display.setText(display.getText() + "."); + } + } else { + calculate(Double.parseDouble(display.getText())); + lastCommand = command; + start = true; + } + } + + private void calculate(double n) { + if (lastCommand.equals("+")) { + result += n; + } else if (lastCommand.equals("-")) { + result -= n; + } else if (lastCommand.equals("*")) { + result *= n; + } else if (lastCommand.equals("/")) { + result /= n; + } else { + result = n; + } + display.setText(String.format("%.0f", result)); + } + + public static void main(String[] args) { + launch(args); + } +} diff --git a/out/production/_02/Calculator.class b/out/production/_02/Calculator.class deleted file mode 100644 index 940e59b..0000000 Binary files a/out/production/_02/Calculator.class and /dev/null differ