javafx 计算器
时间: 2023-10-31 12:03:06 浏览: 86
JavaFX计算器是一个基于JavaFX框架开发的计算器应用程序。它具有图形用户界面,能够实现基本的算术运算。
JavaFX是一个用于开发富客户端应用程序的框架,它可以让开发者使用Java编写跨平台的图形用户界面。因此,JavaFX计算器可以在不同的操作系统上运行,如Windows、Mac和Linux等。
JavaFX计算器的界面通常由数字按钮、运算符按钮和其他功能按钮构成。用户可以使用鼠标点击这些按钮来输入数字和进行运算。另外,用户还可以通过键盘输入数字和运算符来进行计算。
JavaFX计算器还拥有一套完整的计算逻辑,能够根据用户输入的数字和运算符进行实时计算,并将计算结果显示在界面上。这个计算逻辑通常由Java代码实现,可以进行加、减、乘、除等基本运算,同时还可以处理小数运算和括号运算等。
另外,JavaFX计算器通常还具有一些高级功能,如存储和读取计算结果、清除计算器界面、退格功能等。这些功能可以让用户更方便地进行计算。
总之,JavaFX计算器是一个基于JavaFX框架开发的计算器应用程序,具有图形用户界面和完整的计算逻辑,能够方便地进行基本的数学运算。
相关问题
javafx设计计算器的简易计算课程设计
以下是一个简单的 JavaFX 计算器设计课程:
1. 创建一个新的 JavaFX 项目。
2. 创建一个新的 JavaFX 窗体。
3. 在窗体中添加文本框和按钮。
4. 创建一个类来处理计算器的逻辑。
5. 在类中添加方法来处理计算器的各种操作,例如加法、减法、乘法和除法。
6. 在按钮的事件处理程序中调用适当的方法。
7. 在文本框中显示结果。
以下是一个简单的 JavaFX 计算器示例代码:
```java
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 textField;
private String operator = "";
private double operand1 = 0;
private double operand2 = 0;
@Override
public void start(Stage primaryStage) throws Exception {
GridPane gridPane = new GridPane();
textField = new TextField();
textField.setEditable(false);
gridPane.add(textField, 0, 0, 4, 1);
Button button1 = new Button("1");
button1.setOnAction(event -> textField.setText(textField.getText() + "1"));
gridPane.add(button1, 0, 1);
Button button2 = new Button("2");
button2.setOnAction(event -> textField.setText(textField.getText() + "2"));
gridPane.add(button2, 1, 1);
Button button3 = new Button("3");
button3.setOnAction(event -> textField.setText(textField.getText() + "3"));
gridPane.add(button3, 2, 1);
Button buttonPlus = new Button("+");
buttonPlus.setOnAction(event -> {
operator = "+";
operand1 = Double.parseDouble(textField.getText());
textField.clear();
});
gridPane.add(buttonPlus, 3, 1);
Button button4 = new Button("4");
button4.setOnAction(event -> textField.setText(textField.getText() + "4"));
gridPane.add(button4, 0, 2);
Button button5 = new Button("5");
button5.setOnAction(event -> textField.setText(textField.getText() + "5"));
gridPane.add(button5, 1, 2);
Button button6 = new Button("6");
button6.setOnAction(event -> textField.setText(textField.getText() + "6"));
gridPane.add(button6, 2, 2);
Button buttonMinus = new Button("-");
buttonMinus.setOnAction(event -> {
operator = "-";
operand1 = Double.parseDouble(textField.getText());
textField.clear();
});
gridPane.add(buttonMinus, 3, 2);
Button button7 = new Button("7");
button7.setOnAction(event -> textField.setText(textField.getText() + "7"));
gridPane.add(button7, 0, 3);
Button button8 = new Button("8");
button8.setOnAction(event -> textField.setText(textField.getText() + "8"));
gridPane.add(button8, 1, 3);
Button button9 = new Button("9");
button9.setOnAction(event -> textField.setText(textField.getText() + "9"));
gridPane.add(button9, 2, 3);
Button buttonMultiply = new Button("*");
buttonMultiply.setOnAction(event -> {
operator = "*";
operand1 = Double.parseDouble(textField.getText());
textField.clear();
});
gridPane.add(buttonMultiply, 3, 3);
Button buttonClear = new Button("C");
buttonClear.setOnAction(event -> textField.clear());
gridPane.add(buttonClear, 0, 4);
Button button0 = new Button("0");
button0.setOnAction(event -> textField.setText(textField.getText() + "0"));
gridPane.add(button0, 1, 4);
Button buttonDecimal = new Button(".");
buttonDecimal.setOnAction(event -> textField.setText(textField.getText() + "."));
gridPane.add(buttonDecimal, 2, 4);
Button buttonDivide = new Button("/");
buttonDivide.setOnAction(event -> {
operator = "/";
operand1 = Double.parseDouble(textField.getText());
textField.clear();
});
gridPane.add(buttonDivide, 3, 4);
Button buttonEquals = new Button("=");
buttonEquals.setOnAction(event -> {
operand2 = Double.parseDouble(textField.getText());
double result = 0;
switch (operator) {
case "+":
result = operand1 + operand2;
break;
case "-":
result = operand1 - operand2;
break;
case "*":
result = operand1 * operand2;
break;
case "/":
result = operand1 / operand2;
break;
}
textField.setText(Double.toString(result));
});
gridPane.add(buttonEquals, 2, 5);
Scene scene = new Scene(gridPane, 200, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
此代码实现了一个简单的带有加、减、乘、除功能的计算器。
javafx怎么写一个计算器
你可以按照以下步骤来编写一个简单的计算器程序:
1. 创建一个新的 JavaFX 项目并添加一个新的 FXML 文件。
2. 在 FXML 文件中添加一个 GridPane,用于放置计算器按钮和显示结果。
3. 在 GridPane 中添加一个 TextField,用于显示计算器输出。
4. 在 GridPane 中添加多个 Button,用于表示数字和操作符。
5. 在 Controller 类中创建一个变量,用于存储当前计算器的状态。
6. 在 Controller 类中添加事件处理程序,用于响应用户点击按钮的操作。
7. 在事件处理程序中更新计算器状态,并根据用户的操作更新 TextField 中的文本。
8. 最后,将 FXML 文件与 Controller 类关联起来,并在主应用程序中启动计算器。
下面是一个简单的 JavaFX 计算器示例,供你参考:
FXML 文件:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.GridPane?>
<GridPane fx:controller="com.example.calculator.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="CENTER">
<TextField fx:id="resultField" GridPane.columnIndex="0"
GridPane.rowIndex="0" GridPane.columnSpan="4"
editable="false" promptText="0" style="-fx-font-size: 18px;" />
<Button text="7" onAction="#handleNumberClick" GridPane.columnIndex="0"
GridPane.rowIndex="1" />
<Button text="8" onAction="#handleNumberClick" GridPane.columnIndex="1"
GridPane.rowIndex="1" />
<Button text="9" onAction="#handleNumberClick" GridPane.columnIndex="2"
GridPane.rowIndex="1" />
<Button text="/" onAction="#handleOperatorClick" GridPane.columnIndex="3"
GridPane.rowIndex="1" />
<Button text="4" onAction="#handleNumberClick" GridPane.columnIndex="0"
GridPane.rowIndex="2" />
<Button text="5" onAction="#handleNumberClick" GridPane.columnIndex="1"
GridPane.rowIndex="2" />
<Button text="6" onAction="#handleNumberClick" GridPane.columnIndex="2"
GridPane.rowIndex="2" />
<Button text="*" onAction="#handleOperatorClick" GridPane.columnIndex="3"
GridPane.rowIndex="2" />
<Button text="1" onAction="#handleNumberClick" GridPane.columnIndex="0"
GridPane.rowIndex="3" />
<Button text="2" onAction="#handleNumberClick" GridPane.columnIndex="1"
GridPane.rowIndex="3" />
<Button text="3" onAction="#handleNumberClick" GridPane.columnIndex="2"
GridPane.rowIndex="3" />
<Button text="-" onAction="#handleOperatorClick" GridPane.columnIndex="3"
GridPane.rowIndex="3" />
<Button text="0" onAction="#handleNumberClick" GridPane.columnIndex="0"
GridPane.rowIndex="4" GridPane.columnSpan="2" />
<Button text="." onAction="#handleNumberClick" GridPane.columnIndex="2"
GridPane.rowIndex="4" />
<Button text="+" onAction="#handleOperatorClick" GridPane.columnIndex="3"
GridPane.rowIndex="4" />
<Button text="C" onAction="#handleClearClick" GridPane.columnIndex="0"
GridPane.rowIndex="5" GridPane.columnSpan="2" />
<Button text="=" onAction="#handleEqualClick" GridPane.columnIndex="2"
GridPane.rowIndex="5" GridPane.columnSpan="2" />
</GridPane>
```
Controller 类:
```java
package com.example.calculator;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
public class Controller {
private enum Operator {
ADD, SUBTRACT, MULTIPLY, DIVIDE
}
private Operator currentOperator;
private double currentValue;
private boolean startNewValue = true;
@FXML
private TextField resultField;
@FXML
public void handleNumberClick(ActionEvent event) {
String digit = ((Button) event.getSource()).getText();
if (startNewValue) {
resultField.setText(digit);
startNewValue = false;
} else {
resultField.setText(resultField.getText() + digit);
}
}
@FXML
public void handleOperatorClick(ActionEvent event) {
String operatorSymbol = ((Button) event.getSource()).getText();
switch (operatorSymbol) {
case "+":
currentOperator = Operator.ADD;
break;
case "-":
currentOperator = Operator.SUBTRACT;
break;
case "*":
currentOperator = Operator.MULTIPLY;
break;
case "/":
currentOperator = Operator.DIVIDE;
break;
}
currentValue = Double.parseDouble(resultField.getText());
startNewValue = true;
}
@FXML
public void handleClearClick(ActionEvent event) {
resultField.setText("0");
startNewValue = true;
}
@FXML
public void handleEqualClick(ActionEvent event) {
double newValue = Double.parseDouble(resultField.getText());
switch (currentOperator) {
case ADD:
currentValue += newValue;
break;
case SUBTRACT:
currentValue -= newValue;
break;
case MULTIPLY:
currentValue *= newValue;
break;
case DIVIDE:
currentValue /= newValue;
break;
}
resultField.setText(String.valueOf(currentValue));
startNewValue = true;
}
}
```
在主应用程序中启动计算器:
```java
package com.example.calculator;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("calculator.fxml"));
primaryStage.setTitle("Calculator");
primaryStage.setScene(new Scene(root, 300, 400));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
```
运行程序,你应该可以看到一个简单的计算器界面。