Compare commits
2 Commits
6059a8fdbf
...
aa518fd1b7
Author | SHA1 | Date |
---|---|---|
fdzcxy212206209 | aa518fd1b7 | 2 months ago |
翁启凡 | c4b085f534 | 2 months ago |
@ -0,0 +1,46 @@
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.Button;
|
||||
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.ScriptException;
|
||||
|
||||
public class CalculatorController {
|
||||
|
||||
@FXML
|
||||
private Label display; // 用于显示计算结果的标签
|
||||
|
||||
private StringBuilder currentInput = new StringBuilder(); // 存储当前输入
|
||||
|
||||
public void handleButtonClick(ActionEvent actionEvent) {
|
||||
String buttonText = ((Button) actionEvent.getSource()).getText(); // 获取被点击按钮的文本
|
||||
|
||||
if (buttonText.equals("C")) {
|
||||
currentInput.setLength(0); // 清空输入
|
||||
display.setText("0");
|
||||
} else if (buttonText.equals("=")) {
|
||||
calculateResult(); // 计算结果
|
||||
} else {
|
||||
if (currentInput.length() < 10) { // 限制输入长度
|
||||
currentInput.append(buttonText); // 更新输入
|
||||
display.setText(currentInput.toString()); // 更新显示
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void calculateResult() {
|
||||
ScriptEngineManager manager = new ScriptEngineManager();
|
||||
ScriptEngine engine = manager.getEngineByName("JavaScript"); // 使用JavaScript引擎进行计算
|
||||
try {
|
||||
Object result = engine.eval(currentInput.toString()); // 计算结果
|
||||
display.setText(result.toString()); // 更新显示
|
||||
currentInput.setLength(0); // 清空当前输入
|
||||
currentInput.append(result.toString()); // 将结果设置为下一个计算的输入
|
||||
} catch (ScriptException e) {
|
||||
display.setText("Error"); // 处理错误
|
||||
currentInput.setLength(0); // 清空输入
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.layout.BorderPane?>
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
|
||||
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="CalculatorController">
|
||||
<center>
|
||||
<GridPane prefHeight="300.0" prefWidth="300.0" BorderPane.alignment="CENTER">
|
||||
<Label fx:id="display" text="0" style="-fx-font-size: 24; -fx-padding: 10;" GridPane.rowIndex="0" GridPane.columnSpan="4"/>
|
||||
|
||||
<Button text="7" onAction="#handleButtonClick" GridPane.rowIndex="1" GridPane.columnIndex="0" minWidth="70" minHeight="70"/>
|
||||
<Button text="8" onAction="#handleButtonClick" GridPane.rowIndex="1" GridPane.columnIndex="1" minWidth="70" minHeight="70"/>
|
||||
<Button text="9" onAction="#handleButtonClick" GridPane.rowIndex="1" GridPane.columnIndex="2" minWidth="70" minHeight="70"/>
|
||||
<Button text="/" onAction="#handleButtonClick" GridPane.rowIndex="1" GridPane.columnIndex="3" minWidth="70" minHeight="70"/>
|
||||
|
||||
<Button text="4" onAction="#handleButtonClick" GridPane.rowIndex="2" GridPane.columnIndex="0" minWidth="70" minHeight="70"/>
|
||||
<Button text="5" onAction="#handleButtonClick" GridPane.rowIndex="2" GridPane.columnIndex="1" minWidth="70" minHeight="70"/>
|
||||
<Button text="6" onAction="#handleButtonClick" GridPane.rowIndex="2" GridPane.columnIndex="2" minWidth="70" minHeight="70"/>
|
||||
<Button text="*" onAction="#handleButtonClick" GridPane.rowIndex="2" GridPane.columnIndex="3" minWidth="70" minHeight="70"/>
|
||||
|
||||
<Button text="1" onAction="#handleButtonClick" GridPane.rowIndex="3" GridPane.columnIndex="0" minWidth="70" minHeight="70"/>
|
||||
<Button text="2" onAction="#handleButtonClick" GridPane.rowIndex="3" GridPane.columnIndex="1" minWidth="70" minHeight="70"/>
|
||||
<Button text="3" onAction="#handleButtonClick" GridPane.rowIndex="3" GridPane.columnIndex="2" minWidth="70" minHeight="70"/>
|
||||
<Button text="-" onAction="#handleButtonClick" GridPane.rowIndex="3" GridPane.columnIndex="3" minWidth="70" minHeight="70"/>
|
||||
|
||||
<Button text="0" onAction="#handleButtonClick" GridPane.rowIndex="4" GridPane.columnIndex="0" minWidth="70" minHeight="70"/>
|
||||
<Button text="=" onAction="#handleButtonClick" GridPane.rowIndex="4" GridPane.columnIndex="1" minWidth="70" minHeight="70"/>
|
||||
<Button text="C" onAction="#handleButtonClick" GridPane.rowIndex="4" GridPane.columnIndex="2" minWidth="70" minHeight="70"/>
|
||||
<Button text="+" onAction="#handleButtonClick" GridPane.rowIndex="4" GridPane.columnIndex="3" minWidth="70" minHeight="70"/>
|
||||
</GridPane>
|
||||
</center>
|
||||
</BorderPane>
|
||||
|
||||
|
||||
|
Loading…
Reference in new issue