From 5a35e4018e052ba9525ff52108c0d69ee4c2aaee Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9E=97=E4=B8=96=E8=BE=89?= <2670787458@qq.com>
Date: Thu, 10 Oct 2024 14:53:27 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0javafx=E7=95=8C=E9=9D=A2?=
=?UTF-8?q?=E5=B8=83=E5=B1=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/misc.xml | 2 +-
.idea/uiDesigner.xml | 124 ++++++++++++++++++++++++
demo/demo.iml | 2 +-
demo/src/{Main.java => Calculator.java} | 23 ++++-
demo/src/CalculatorApp.java | 114 ++++++++++++++++++++++
out/production/demo/Calculator.class | Bin 0 -> 2741 bytes
out/production/demo/CalculatorApp.class | Bin 0 -> 4810 bytes
7 files changed, 260 insertions(+), 5 deletions(-)
create mode 100644 .idea/uiDesigner.xml
rename demo/src/{Main.java => Calculator.java} (74%)
create mode 100644 demo/src/CalculatorApp.java
create mode 100644 out/production/demo/Calculator.class
create mode 100644 out/production/demo/CalculatorApp.class
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 07115cd..0e05be0 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/demo.iml b/demo/demo.iml
index 6db0c46..c90834f 100644
--- a/demo/demo.iml
+++ b/demo/demo.iml
@@ -5,7 +5,7 @@
-
+
\ No newline at end of file
diff --git a/demo/src/Main.java b/demo/src/Calculator.java
similarity index 74%
rename from demo/src/Main.java
rename to demo/src/Calculator.java
index 26c6c22..71a1548 100644
--- a/demo/src/Main.java
+++ b/demo/src/Calculator.java
@@ -1,6 +1,6 @@
import java.util.Scanner;
-public class Main {
+public class Calculator {
// 加法
public static double add(double num1, double num2) {
@@ -40,15 +40,32 @@ public class Main {
// 输入第一个数
System.out.print("请输入第一个数: ");
- double num1 = scanner.nextDouble();
+ String num3 = scanner.nextLine();
+ int num1;
+ try{
+ num1=Integer.parseInt(num3);
+ }catch (NumberFormatException e){
+ System.out.println("输入有误,请输入一个整数!");
+ return;
+ }
// 输入运算符
System.out.print("请输入运算符 (+, -, *, /, %): ");
char operator = scanner.next().charAt(0);
+ if (!(operator == '+' || operator == '-' || operator == '*' || operator == '/' || operator == '%')) {
+ throw new IllegalArgumentException("无效的运算符");
+ }
// 输入第二个数
System.out.print("请输入第二个数: ");
- double num2 = scanner.nextDouble();
+ String num4 = scanner.nextLine();
+ int num2;
+ try{
+ num2=Integer.parseInt(num3);
+ }catch (NumberFormatException e){
+ System.out.println("输入有误,请输入一个整数!");
+ return;
+ }
// 结果变量
double result = 0;
diff --git a/demo/src/CalculatorApp.java b/demo/src/CalculatorApp.java
new file mode 100644
index 0000000..e909209
--- /dev/null
+++ b/demo/src/CalculatorApp.java
@@ -0,0 +1,114 @@
+import javafx.application.Application;
+import javafx.geometry.Insets;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.Label;
+import javafx.scene.control.TextField;
+import javafx.scene.layout.GridPane;
+import javafx.stage.Stage;
+
+public class CalculatorApp extends Application {
+
+ private TextField num1Field = new TextField();
+ private TextField num2Field = new TextField();
+ private Label resultLabel = new Label();
+ private Calculator calculator = new Calculator(); // 引入计算器逻辑类
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+
+ @Override
+ public void start(Stage primaryStage) {
+ primaryStage.setTitle("JavaFX Calculator");
+
+ // 创建布局
+ GridPane grid = new GridPane();
+ grid.setPadding(new Insets(10, 10, 10, 10));
+ grid.setVgap(8);
+ grid.setHgap(10);
+
+ // 第一个数
+ Label num1Label = new Label("num1:");
+ GridPane.setConstraints(num1Label, 0, 0);
+ GridPane.setConstraints(num1Field, 1, 0);
+
+ // 第二个数
+ Label num2Label = new Label("num2:");
+ GridPane.setConstraints(num2Label, 0, 1);
+ GridPane.setConstraints(num2Field, 1, 1);
+
+ // 结果标签
+ Label resultText = new Label("结果:");
+ GridPane.setConstraints(resultText, 0, 2);
+ GridPane.setConstraints(resultLabel, 1, 2);
+
+ // 加法按钮
+ Button addButton = new Button("+");
+ addButton.setOnAction(e -> calculate('+'));
+ GridPane.setConstraints(addButton, 0, 3);
+
+ // 减法按钮
+ Button subtractButton = new Button("-");
+ subtractButton.setOnAction(e -> calculate('-'));
+ GridPane.setConstraints(subtractButton, 1, 3);
+
+ // 乘法按钮
+ Button multiplyButton = new Button("*");
+ multiplyButton.setOnAction(e -> calculate('*'));
+ GridPane.setConstraints(multiplyButton, 2, 3);
+
+ // 除法按钮
+ Button divideButton = new Button("/");
+ divideButton.setOnAction(e -> calculate('/'));
+ GridPane.setConstraints(divideButton, 3, 3);
+
+ // 取余按钮
+ Button remainderButton = new Button("%");
+ remainderButton.setOnAction(e -> calculate('%'));
+ GridPane.setConstraints(remainderButton, 4, 3);
+
+ // 添加所有组件到布局中
+ grid.getChildren().addAll(num1Label, num1Field, num2Label, num2Field, resultText, resultLabel,
+ addButton, subtractButton, multiplyButton, divideButton, remainderButton);
+
+ // 创建场景并设置到窗口
+ Scene scene = new Scene(grid, 400, 200);
+ primaryStage.setScene(scene);
+ primaryStage.show();
+ }
+
+ // 计算方法
+ private void calculate(char operator) {
+ try {
+ double num1 = Double.parseDouble(num1Field.getText());
+ double num2 = Double.parseDouble(num2Field.getText());
+ double result = 0;
+
+ switch (operator) {
+ case '+':
+ result = calculator.add(num1, num2);
+ break;
+ case '-':
+ result = calculator.subtract(num1, num2);
+ break;
+ case '*':
+ result = calculator.multiply(num1, num2);
+ break;
+ case '/':
+ result = calculator.divide(num1, num2);
+ break;
+ case '%':
+ result = calculator.remainder(num1, num2);
+ break;
+ }
+
+ resultLabel.setText(String.valueOf(result));
+
+ } catch (NumberFormatException e) {
+ resultLabel.setText("Invalid Input");
+ } catch (ArithmeticException e) {
+ resultLabel.setText(e.getMessage());
+ }
+ }
+}
\ No newline at end of file
diff --git a/out/production/demo/Calculator.class b/out/production/demo/Calculator.class
new file mode 100644
index 0000000000000000000000000000000000000000..6aae97a7ca1a23f6ccc0c99504e1cd50e94f8bfa
GIT binary patch
literal 2741
zcma)8T~JhI7=AujILmrK1zFc0azW8uKv%*1!GA%MLbOm5we+x@@aX<^_N<|q|E3nE
zGp3G?6J1o!IF6*#0Qq~>P1AKVU59{IHq%WPmObC@fkn{_=DgqczVG)v@Bars|8x63
zfVnv9!VEOzU>(*w@wN-^pi#kw?1O(%%O58;D%d2|@4AqK%}zAQGg~CH)rD<%Pr>_6
zY=z1ffHzdN%y17AX4pEX{9}Q}uO`2&)-WEEn
zokmMoSCsUaQ4yBRQrX){IDtZW2uH1l+!@^}Dn^S|FrFS_6%iX+&BVN%ut^
zKVlRQQ>VgM9W}$6wW=+s$1Ecnp_>lPY^C!BFMtwI;z2DEktPdLPzlQj1sYRAd6`jF
z$*hcUgF!`Ox+!x(UusfE=Q2K1k26>W%UE{>dstopS7S6`2KCj3O!4S+7H3IV6+ZYC
ze59fcOpxc%mzM@QJFC5qE`8H?{`=mZ(*sBE_4eGJtze&ukFj51Oxl~;Xd+p+p#wJe>4@|`;I3Ud)6c|6y**$Ro+{5GF_Fuo=+jFS5=Nhe6dsQ65
zeiestM8Q!N$8cO=O4{xVvn?h1P)r~%AYIm;xkOEOQA1(KY?XS|m-o9e-p2_uy3Q)mC3bA4Z3
zk&b?jc1cdF_yR{%oPnQZPgnYxqOEJ*rOUAxR>u_Zv!cCmOAm9-q6wZYOtqj94Xo!F
zSUj(5VRmRi(z$2F?CY336ygjO`bPGy9H9(3U}@00NGy>C_1KpPJ6s{}WhIf>{Sm#*
zlFx_0IG=x{jlsT4j&5DV(p%+}Ib)g`*U7%bG0wF^0&|XnJ2i6!Hx6H&pW~Hf#2d5*
z$=3R}P_4ycdW7%K%ooKs!X3L}%-3Yz{|~j(iVl_{D;SE#brkcdosoRY6$m-1q-Ep-
zTm{#xvTlf*++?7fG&?EGLHub97P%Z=nN5kjyZ{dV0*>jvU?MV&r
zFIyT=h79B_R0p3vcYd7_lst;OJ;)26iG&vp15VG9;FAbT}BZFcQB=?8{YilE|hqbE==vhG#+7+N^i1t
zJt$%w#_-SF0sdVXV>iTwr1LW{ii1(W7V&UcirDI222{d|m$47<#f#_Hl%Z=;s_JFq7Wo(C!kp!vS(tlx5RuN~XvL
z!BQ+^f=7u;`n7`X;}NCwsz#1CJ2-{1gqCZuiYRUP39G5iqR%&Nyfe5#|0|&|Qh6@-
uDHD;YV2y%0g;5CwZ#{uaJi$`&6da==m7r?4ep#j}f1Jhiqn=n9So<$;qHPKQ
literal 0
HcmV?d00001
diff --git a/out/production/demo/CalculatorApp.class b/out/production/demo/CalculatorApp.class
new file mode 100644
index 0000000000000000000000000000000000000000..59300cbc7163bce1730317f871e9a032e686e448
GIT binary patch
literal 4810
zcma)933yaj75?9BZ!+^p!Vs2WDWO7}jSg!yNr8lfl++19lLi7-eVKVA4`%C|Hz`4>
zinVIBYNf3eYd04ZMT?dRB?Wg;#I4q)?ps@}ORY=YssDX%)+7b@h{>H^yvK{XWW3jlLq06V
z9RY5?PjL5p@jw6)?(^b<0b0iK!vQ$O_>llyVpA24$oQBaAIDJ{pYXJe*;jem^!%M6
zd{P+spdiPDf1mQ<(|Aa@a$JzCAmf6Z5aeMWPGUk>_lS&BUYwTk86P&{v%=%g$@sjC
zFG#3JWa2BkbS)N@P#fN@j;g!%hSCu&p@kyJglQyWp?+^P8R1H(Y+`58WraG+gJgIeDNf~-vHO8zJ2{qI0qY=Y~&d6R;kXn(A
zsbk5E8M>OXt!hHc#dT#ak|HIma=g!uu}A@fuSTOAGp3oOTZ_sy=5u9>sjxDg88Qtu
zV&)H2#+fTU6&uShC{cY>k81g8m7$4%MKvS8;Y8PIpP<6zd`6iWS6zn{QUN9j
zQYTl06HKjbKi9ZxiDk2$2s^P|Nh7YBoAySul&L2Z)VjE2PrIR;BXP~tBc(gM$&_Z;
zIFdRf%wPf{dwSHAg$E1Pr-*b$Ag0ELqUusBlS|hyWQAO6qguiYwMWFAn*?uVbbdah
zQ^k|Dt)9FY*x^X%@XEM
zyVb&uf@|z6idtnb+{XuI;r&sf;fv_%hD$C6_6kgjGJMoOoDEGB?Ip
zs5_C?%(O86D+<1fvkJb3a|*tWb9_ev5iLS?M!`4mO?zckiv;7y2_T^msKF0=*Kj0YR
z_&CR99Dk_bNBA+lFS~II%Z-emDEKLU#v)TDv%oIQ|G9!+;Fk)1g)0jUf3jXSno^b)`4M_2D<93vtnVhwNOc}Bbg8>))OYH
z^1Om3yBCQZwRU&c5BTs`{H?Su+mAK>ibZdGjt-8fiKuX(scuqVs4suy*165rW`oto
zPdj=Oc41%~3r3V&lHV*$*@V9f@()4&DagO5VwkRs=&`7wu}m+kD_j^!#$uXPa?+vR
zp|oadyX@YNWONY+B^7FF5H0ivaOc
z&zU#hrO4*{6CJfX6I)E7Czai3H*s3Y_ma_icL|(!+Hsy_ra+kOhmRihXz4WDw~T))
z_z%BA@H$aDZWLs{Ag>i<4ErQpT69lOj3)PJp|I6VSbo%9Y^q6PjG1Qn%gC(o5}wttGuL_n}gxn2$;+p$b9vvOOSsoJ=nj&2$h-RnDga#S96*X8jjx{a*#-KlowT)R^SCIvlv2z{v5$$h?0|O%Q!T0URrVpyU110
zj{Wo{0v|2#V+1;>LwruyIF+*0>ZLtrMHaGn@d>=7TO`3|n_ZR7o&`rJznOo;1|tE+
z#GZ?_{NEt?=G?qHH|kX6-&Qw|_-t(45(xuD!gkJf
zFrqsd!Rv56<8Ct2Z{W&JjM;5my`6EqpYb}16g9?h3~~OuoubwRP9w?h;Onh?Zf5-b
zcz`?Nynin4q&&{p&c{LSiZf5gSYT4z?cg~-Im5E^Y#sqPi!^VSkfDvWs5p;)r_))*
zALV%>)*)k*B}v8&VHtb<)eh0X>>Lt(4ojEZP`zv%okh@lxB=+244h+cDO@Mhgx5f#
zBDTY+ibB&U+Hes?Y_3xku?S4DsO2Jx*s7;0T0V`UwHHyu#y?e2<1~s^Tu2e&^Lob7
tL0~-3(MOg4<-