创建一个JavaFX简单计算器的指南

在开发一个JavaFX简单计算器之前,首先要对整体流程有个清晰的认识。本篇文章将涵盖设计思路、核心代码及其注释,让你能够顺利完成任务。

1. 流程概述

以下是实现JavaFX简单计算器的主要步骤:

步骤 描述
1 创建JavaFX项目并设置基础环境
2 设计计算器GUI界面
3 实现计算逻辑
4 连接用户输入与计算逻辑
5 运行和测试计算器

2. 具体步骤

步骤1:创建JavaFX项目

在IDE(比如 IntelliJ IDEA 或 Eclipse)中,创建一个新的JavaFX项目,并确保JavaFX库已经添加到项目中。

步骤2:设计计算器GUI界面

在主类中创建界面, 代码如下:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class Calculator extends Application {

    private TextField display;

    @Override
    public void start(Stage primaryStage) {
        display = new TextField();
        
        // 创建按钮
        Button[] numberButtons = new Button[10];
        for (int i = 0; i < 10; i++) {
            numberButtons[i] = new Button(String.valueOf(i));
        }
        
        Button addButton = new Button("+");
        Button equalsButton = new Button("=");

        // 创建布局
        GridPane grid = new GridPane();
        grid.add(display, 0, 0, 3, 1); // 将显示框放在网格布局顶部

        // 添加按钮
        int count = 0;
        for (int i = 1; i < 4; i++) {
            for (int j = 0; j < 3; j++) {
                grid.add(numberButtons[count], j, i);
                count++;
            }
        }
        grid.add(addButton, 0, 4);
        grid.add(equalsButton, 1, 4);

        Scene scene = new Scene(grid, 300, 275);
        primaryStage.setTitle("Simple Calculator");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

代码注释

  • TextField display: 显示计算结果的文本框。
  • Button array: 创建数字按钮(0-9)。
  • GridPane: 用于布局按钮。
步骤3:实现计算逻辑

在主类中添加计算逻辑,为每个按钮添加事件处理:

import javafx.event.ActionEvent;
import javafx.event.EventHandler;

public class Calculator extends Application {

    // existing code...

    private String operator;
    private double num1, num2;

    // 事件处理
    private void handleButtonAction(Button button) {
        button.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                String text = button.getText();
                // 处理数字和运算符
                if ("=".equals(text)) {
                    num2 = Double.valueOf(display.getText()); // 获取第二个数
                    switch (operator) {
                        case "+":
                            display.setText(String.valueOf(num1 + num2)); // 显示结果
                            break;
                    }
                } else {
                    if ("+".equals(text)) {
                        operator = text;
                        num1 = Double.valueOf(display.getText()); // 获取第一个数
                        display.clear();
                    } else {
                        display.appendText(text); // 处理数字
                    }
                }
            }
        });
    }
}

代码注释

  • num1, num2: 存储操作数。
  • handleButtonAction: 处理按钮的点击事件。
步骤4:连接用户输入与计算逻辑

为每一个按钮调用 handleButtonAction 方法来连接事件处理.

for (Button numberButton : numberButtons) {
    handleButtonAction(numberButton);
}
handleButtonAction(addButton);
handleButtonAction(equalsButton);
步骤5:运行和测试计算器

确保你的IDE运行JavaFX应用程序。运行后,你应该能看到你的计算器界面并进行简单的加法操作。

状态图

以下是简单计算器的状态图,展示其不同状态变化:

stateDiagram
    [*] --> Idle
    Idle --> InputtingNumber
    InputtingNumber --> InputtingOperator
    InputtingOperator --> InputtingNumber
    InputtingNumber --> ResultDisplayed
    ResultDisplayed --> Idle

序列图

以下是用户操作计算器的序列图,展示了按钮点击的流向:

sequenceDiagram
    participant User
    participant Calculator
    User->>Calculator: Click number
    Calculator->>Calculator: Display number
    User->>Calculator: Click operator
    Calculator->>Calculator: Process operator
    User->>Calculator: Click equals
    Calculator-->>User: Show result

结尾

希望通过以上的步骤和代码,你能够顺利实现一个基本的JavaFX计算器。理解JavaFX的基本结构和事件处理机制是学习更多高级功能的基础,加油,未来的开发者!