使用JavaFX编程,模拟Windows当中的计算器程序,实现简单的加减乘除等功能。
时间: 2024-03-23 08:38:56 浏览: 26
好的,我明白了。你可以使用JavaFX的图形用户界面库来构建计算器,实现基本的算术运算。以下是实现的步骤:
1. 创建一个JavaFX项目并添加所需的库文件。
2. 创建一个Calculator类,该类包含GUI组件和处理计算逻辑的方法。
3. 在Calculator类中创建一个布局,包括文本框和按钮。
4. 为每个按钮添加事件处理程序,以便在单击按钮时执行相应的操作。
5. 创建一个计算方法,该方法接受两个数和一个运算操作符,并返回结果。
6. 在事件处理程序中调用计算方法,并将结果显示在文本框中。
以下是一个简单的实现示例:
```java
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
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.stage.Stage;
public class Calculator extends Application {
private TextField textField;
private double num1 = 0;
private double num2 = 0;
private String operator = "";
@Override
public void start(Stage primaryStage) throws Exception {
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(20));
gridPane.setHgap(10);
gridPane.setVgap(10);
textField = new TextField();
textField.setEditable(false);
textField.setPrefWidth(200);
gridPane.add(textField, 0, 0, 4, 1);
Button button1 = new Button("1");
button1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "1");
}
});
gridPane.add(button1, 0, 1);
Button button2 = new Button("2");
button2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "2");
}
});
gridPane.add(button2, 1, 1);
Button button3 = new Button("3");
button3.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "3");
}
});
gridPane.add(button3, 2, 1);
Button buttonAdd = new Button("+");
buttonAdd.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
num1 = Double.parseDouble(textField.getText());
operator = "+";
textField.setText("");
}
});
gridPane.add(buttonAdd, 3, 1);
Button button4 = new Button("4");
button4.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "4");
}
});
gridPane.add(button4, 0, 2);
Button button5 = new Button("5");
button5.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "5");
}
});
gridPane.add(button5, 1, 2);
Button button6 = new Button("6");
button6.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "6");
}
});
gridPane.add(button6, 2, 2);
Button buttonSubtract = new Button("-");
buttonSubtract.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
num1 = Double.parseDouble(textField.getText());
operator = "-";
textField.setText("");
}
});
gridPane.add(buttonSubtract, 3, 2);
Button button7 = new Button("7");
button7.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "7");
}
});
gridPane.add(button7, 0, 3);
Button button8 = new Button("8");
button8.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "8");
}
});
gridPane.add(button8, 1, 3);
Button button9 = new Button("9");
button9.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "9");
}
});
gridPane.add(button9, 2, 3);
Button buttonMultiply = new Button("*");
buttonMultiply.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
num1 = Double.parseDouble(textField.getText());
operator = "*";
textField.setText("");
}
});
gridPane.add(buttonMultiply, 3, 3);
Button buttonClear = new Button("C");
buttonClear.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText("");
num1 = 0;
num2 = 0;
operator = "";
}
});
gridPane.add(buttonClear, 0, 4);
Button button0 = new Button("0");
button0.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
textField.setText(textField.getText() + "0");
}
});
gridPane.add(button0, 1, 4);
Button buttonEquals = new Button("=");
buttonEquals.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
num2 = Double.parseDouble(textField.getText());
double result = calculate(num1, num2, operator);
textField.setText(Double.toString(result));
num1 = result;
num2 = 0;
operator = "";
}
});
gridPane.add(buttonEquals, 2, 4);
Button buttonDivide = new Button("/");
buttonDivide.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
num1 = Double.parseDouble(textField.getText());
operator = "/";
textField.setText("");
}
});
gridPane.add(buttonDivide, 3, 4);
Scene scene = new Scene(gridPane, 250, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("Calculator");
primaryStage.show();
}
private double calculate(double num1, double num2, String operator) {
switch (operator) {
case "+":
return num1 + num2;
case "-":
return num1 - num2;
case "*":
return num1 * num2;
case "/":
return num1 / num2;
default:
return 0;
}
}
public static void main(String[] args) {
launch(args);
}
}
```
这个计算器可以执行基本的加、减、乘、除运算,并且具有清除、等于和数字键的功能。你可以根据自己的需要对其进行修改和扩展。