From fd5fbdd580b7f3b5331faab274064a2819431fa9 Mon Sep 17 00:00:00 2001 From: fanfan <2310248551@qq.com> Date: Thu, 12 May 2022 21:57:35 +0800 Subject: [PATCH 1/5] commit message01 --- src/java2022spring/Test.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java index 24deb29..a95b62e 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Test.java @@ -3,5 +3,6 @@ package java2022spring; public class Test { public static void main(String[] args) { System.out.println("Hello world!"); + System.out.println("push"); } } -- Gitee From e0c91330bacbd27d6bde6c7aaccfc813634ac986 Mon Sep 17 00:00:00 2001 From: fanfan <2310248551@qq.com> Date: Fri, 3 Jun 2022 11:57:58 +0800 Subject: [PATCH 2/5] commit 001 --- src/java2022spring/ActionListen.java | 24 +++ src/java2022spring/Calculation.java | 197 ++++++++++++++++++++ src/java2022spring/{Test.java => Text.java} | 5 +- 3 files changed, 223 insertions(+), 3 deletions(-) create mode 100644 src/java2022spring/ActionListen.java create mode 100644 src/java2022spring/Calculation.java rename src/java2022spring/{Test.java => Text.java} (42%) diff --git a/src/java2022spring/ActionListen.java b/src/java2022spring/ActionListen.java new file mode 100644 index 0000000..17d5676 --- /dev/null +++ b/src/java2022spring/ActionListen.java @@ -0,0 +1,24 @@ +/*package java2022spring; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JOptionPane; +import javax.swing.JTextField; +public class ActionListen implements ActionListener{ + + @Override + public void actionPerformed(ActionEvent e) { + // TODO 自动生成的方法存根 + String x = ""; + String action = e.getActionCommand(); + if(action.charAt(0)>='0'&&action.charAt(0)<='9') { + x += action; + text.setText(x); + + } + + + } + +} +*/ \ No newline at end of file diff --git a/src/java2022spring/Calculation.java b/src/java2022spring/Calculation.java new file mode 100644 index 0000000..b7dc939 --- /dev/null +++ b/src/java2022spring/Calculation.java @@ -0,0 +1,197 @@ +package java2022spring; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.*; +public class Calculation extends JFrame { + JFrame frame= new JFrame("标准计算器"); + JMenuBar menubar; + JMenu menu; + double n1,n2;//记录两个数 + boolean finishedReading;//记录是否完成操作 + String operator;//记录操作符 + public JTextField text = new JTextField(); + JPanel panel1 = new JPanel();//窗体中部父容器 + JPanel panel1_1 = new JPanel();//数字与计算符号 + JPanel panel1_2 = new JPanel();//删除键 + JPanel panel2 = new JPanel();//窗体西面父容器 + JPanel panel2_1 = new JPanel();//空白键 + JPanel panel2_2 = new JPanel();//历史记录键 + public JButton[] button1_1 = new JButton[20];//按钮较多的情况下采用数组的形式 + public JButton[] button1_2 = new JButton[3]; + public JButton[] button2_2 = new JButton[4]; + JButton button2_1 = new JButton(""); + + + Calculation() { + init(); + frame.setBounds(400,400,450,450); + panel1.setLayout(new BorderLayout()); + panel2.setLayout(new BorderLayout()); + panel2_2.setPreferredSize(new Dimension(60,60)); + panel2_1.setPreferredSize(new Dimension(60,60)); + panel1_2.setPreferredSize(new Dimension(60,40)); + panel1_1.setBackground(new Color(160,238,225)); + panel1_2.setBackground(new Color(160,238,225)); + panel2_2.setBackground(new Color(160,238,225)); + + + text.setHorizontalAlignment(JTextField.RIGHT); + text.setPreferredSize(new Dimension(200,44)); + text.setBackground(new Color(192,247,252)); + text.setFont(new Font("Microsoft Uighur",Font.ITALIC,20)); + + panel1_1.setLayout(new GridLayout(4, 5, 8, 8));//子容器布局 + panel1_2.setLayout(new GridLayout(1, 3, 4, 4)); + panel2_1.setLayout(new GridLayout(1, 1, 5, 5)); + panel2_2.setLayout(new GridLayout(4, 1, 8, 8)); + + String[] s1 = {"7", "8", "9","/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "#", "0", "+/-", ".", "+", "="}; + for (int i = 0; i < s1.length; i++) {//数字与计算符号按钮 + button1_1[i] = new JButton(s1[i]); + button1_1[i].addActionListener(new ActionListen()); + button1_1[i].setFont(new Font("Cambria", Font.BOLD, 16)); + button1_1[i].setBackground(new Color(25,202,173)); + panel1_1.add(button1_1[i]); + } + button1_1[19].setBackground(new Color(236,173,158)); + + String[] s2 = {"Backspace","AC","C"}; + for (int i = 0; i < s2.length; i++) {//删除键按钮 + button1_2[i] = new JButton(s2[i]); + button1_2[i].addActionListener(new ActionListen()); + button1_2[i].setFont(new Font("Cambria", Font.BOLD, 16)); + panel1_2.add(button1_2[i]); + } + + String[] s3 = {"MC","MR","MS","M+"}; + for (int i = 0; i < s3.length; i++) {//历史记录键按钮 + button2_2[i] = new JButton(s3[i]); + button2_2[i].addActionListener(new ActionListen()); + button2_2[i].setFont(new Font("Cambria", Font.BOLD, 16)); + panel2_2.add(button2_2[i]); + } + panel2_1.add(button2_1); + button2_1.addActionListener(new ActionListen()); + text.addActionListener(new ActionListen()); + + + panel1.add(panel1_2,BorderLayout.NORTH); + panel1.add(panel1_1,BorderLayout.CENTER);//将子容器添加到父容器 + panel2.add(panel2_1,BorderLayout.NORTH); + panel2.add(panel2_2,BorderLayout.CENTER); + + frame.add(text,BorderLayout.NORTH);//文本框的位置 + frame.add(panel1,BorderLayout.CENTER);//将panel1设置在中部区域 + frame.add(panel2,BorderLayout.WEST);//将panel2设置在西部区域 + + frame.setVisible(true); + frame.setResizable(true); + setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + validate(); + } + void init() { + menubar=new JMenuBar(); + menu=new JMenu("其他类型"); + menubar.setPreferredSize(new Dimension(200,24)); + + frame.setJMenuBar(menubar); + + } + + public class ActionListen implements ActionListener{ + + @Override + public void actionPerformed(ActionEvent e) { + String label = e.getActionCommand(); //匹配是否第一个字符是数字 + if(label.charAt(0)>='0'&&label.charAt(0)<='9') { + String s = text.getText(); + if (!finishedReading) + text.setText(label); + else + text.setText(s+label); + finishedReading = true; + } + + //#号代表取倒数 + else if (label.equals("+") ||label.equals("-") || label.equals("*") + || label.equals("/") || label.equals("%") || label.equals("sqrt") || label.equals("#")) { + n1 = Double.parseDouble(text.getText()); + operator = e.getActionCommand(); + finishedReading = false; + } + + //取相反数 + else if (label.equals("+/-")) { + if (!finishedReading) { + text.setText("-"); + finishedReading = true; + } + } + //添加小数点 + else if(label.equals(".")) { + if(finishedReading) { + String s = text.getText(); + text.setText(s + label); + finishedReading = true; + } + } + + else if(label.equals("=")) { + n2 = Double.parseDouble(text.getText()); + finishedReading = true; + switch (operator) { + case "+": + text.setText(n1 + n2 + ""); + break; + case "-": + text.setText(n1 - n2 + ""); + break; + case"#": + if(n1==0) + text.setText("分母不能为0"); + else + text.setText(1 / n1 + ""); + break; + case "*": + text.setText(n1 * n2 + ""); + break; + case "/": + if (n2 != 0) + text.setText(n1 / n2 + ""); + else + text.setText("分母不能为0"); + break; + case "%": + text.setText(n1 % n2 + ""); + break; + case "sqrt": + text.setText( Math.sqrt(n1) + ""); + break;}} + else if (label.equals("Backspace")) { + String expression = text.getText(); + if (expression.length() != 0) { + expression = expression.substring(0, expression.length() - 1); + text.setText(expression);} + else if (expression.length() == 0 && text.getText().length() != 0) + // 对于计算结果后避免删除键不能清楚结果显示 + text.setText(expression); + } + + else if(label.equals("AC")) { + text.setText(""); + finishedReading = false; + } + + else if(label.equals("CE")) { + + } + + } + + + +}} + +//原文链接:https://blog.csdn.net/eternity_memory/article/details/122277655 \ No newline at end of file diff --git a/src/java2022spring/Test.java b/src/java2022spring/Text.java similarity index 42% rename from src/java2022spring/Test.java rename to src/java2022spring/Text.java index a95b62e..9117743 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Text.java @@ -1,8 +1,7 @@ package java2022spring; -public class Test { +public class Text { public static void main(String[] args) { - System.out.println("Hello world!"); - System.out.println("push"); + new Calculation(); } } -- Gitee From e7a2fe2faaf5becb5d07573ee9efa9eaff4ae222 Mon Sep 17 00:00:00 2001 From: fanfan <2310248551@qq.com> Date: Fri, 3 Jun 2022 12:00:58 +0800 Subject: [PATCH 3/5] update file01 --- src/java2022spring/ActionListen.java | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 src/java2022spring/ActionListen.java diff --git a/src/java2022spring/ActionListen.java b/src/java2022spring/ActionListen.java deleted file mode 100644 index 17d5676..0000000 --- a/src/java2022spring/ActionListen.java +++ /dev/null @@ -1,24 +0,0 @@ -/*package java2022spring; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; - -import javax.swing.JOptionPane; -import javax.swing.JTextField; -public class ActionListen implements ActionListener{ - - @Override - public void actionPerformed(ActionEvent e) { - // TODO 自动生成的方法存根 - String x = ""; - String action = e.getActionCommand(); - if(action.charAt(0)>='0'&&action.charAt(0)<='9') { - x += action; - text.setText(x); - - } - - - } - -} -*/ \ No newline at end of file -- Gitee From 60a1c4465848d298c59ccf0db742eac050f9497f Mon Sep 17 00:00:00 2001 From: fanfan <2310248551@qq.com> Date: Mon, 6 Jun 2022 22:22:31 +0800 Subject: [PATCH 4/5] change interface by clicking jmenuitem --- .codetogether.ignore | 1 + src/java2022spring/Calculation.java | 110 +++++++++++++++++++++++----- src/java2022spring/Init.java | 2 + 3 files changed, 96 insertions(+), 17 deletions(-) create mode 100644 .codetogether.ignore create mode 100644 src/java2022spring/Init.java diff --git a/.codetogether.ignore b/.codetogether.ignore new file mode 100644 index 0000000..ad79f56 --- /dev/null +++ b/.codetogether.ignore @@ -0,0 +1 @@ +/** diff --git a/src/java2022spring/Calculation.java b/src/java2022spring/Calculation.java index b7dc939..41d2c33 100644 --- a/src/java2022spring/Calculation.java +++ b/src/java2022spring/Calculation.java @@ -2,35 +2,51 @@ package java2022spring; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; - import javax.swing.*; + public class Calculation extends JFrame { - JFrame frame= new JFrame("标准计算器"); - JMenuBar menubar; - JMenu menu; + JFrame frame1= new JFrame("标准计算器"); + JFrame frame2= new JFrame("亲戚关系计算器"); + JMenuBar menubar1,menubar2; + JMenu menu1,menu2; + JMenuItem otheritem1,otheritem2,otheritem3,otheritem4; double n1,n2;//记录两个数 boolean finishedReading;//记录是否完成操作 String operator;//记录操作符 - public JTextField text = new JTextField(); + public JTextField text = new JTextField();//标准计算器的文本框 + public JTextField text2 = new JTextField();//亲戚关系计算器的文本框 + JPanel panel1 = new JPanel();//窗体中部父容器 JPanel panel1_1 = new JPanel();//数字与计算符号 JPanel panel1_2 = new JPanel();//删除键 JPanel panel2 = new JPanel();//窗体西面父容器 JPanel panel2_1 = new JPanel();//空白键 JPanel panel2_2 = new JPanel();//历史记录键 + + JPanel panel3 = new JPanel(); + JPanel panel3_1 = new JPanel(); + JPanel panel3_2 = new JPanel(); + public JButton[] button1_1 = new JButton[20];//按钮较多的情况下采用数组的形式 public JButton[] button1_2 = new JButton[3]; public JButton[] button2_2 = new JButton[4]; + public JButton[] button3_1 = new JButton[3]; + public JButton[] button3_2 = new JButton[9]; JButton button2_1 = new JButton(""); Calculation() { init(); - frame.setBounds(400,400,450,450); + frame1.setBounds(400,400,450,450); + frame2.setBounds(400,400,450,450); panel1.setLayout(new BorderLayout()); panel2.setLayout(new BorderLayout()); + panel3.setLayout(new BorderLayout()); + panel2_2.setPreferredSize(new Dimension(60,60)); panel2_1.setPreferredSize(new Dimension(60,60)); + panel3_2.setPreferredSize(new Dimension(60,60)); + panel3_1.setPreferredSize(new Dimension(20,60)); panel1_2.setPreferredSize(new Dimension(60,40)); panel1_1.setBackground(new Color(160,238,225)); panel1_2.setBackground(new Color(160,238,225)); @@ -39,6 +55,7 @@ public class Calculation extends JFrame { text.setHorizontalAlignment(JTextField.RIGHT); text.setPreferredSize(new Dimension(200,44)); + text2.setPreferredSize(new Dimension(200,44)); text.setBackground(new Color(192,247,252)); text.setFont(new Font("Microsoft Uighur",Font.ITALIC,20)); @@ -46,6 +63,8 @@ public class Calculation extends JFrame { panel1_2.setLayout(new GridLayout(1, 3, 4, 4)); panel2_1.setLayout(new GridLayout(1, 1, 5, 5)); panel2_2.setLayout(new GridLayout(4, 1, 8, 8)); + panel3_1.setLayout(new GridLayout(1, 3, 8, 8)); + panel3_2.setLayout(new GridLayout(3, 3, 8, 8)); String[] s1 = {"7", "8", "9","/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "#", "0", "+/-", ".", "+", "="}; for (int i = 0; i < s1.length; i++) {//数字与计算符号按钮 @@ -72,6 +91,21 @@ public class Calculation extends JFrame { button2_2[i].setFont(new Font("Cambria", Font.BOLD, 16)); panel2_2.add(button2_2[i]); } + + String[] s4 = {"的","回退","清空"}; + for (int i = 0; i < s4.length; i++) {//删除键按钮 + button3_1[i] = new JButton(s4[i]); + button3_1[i].addActionListener(new ActionListen()); + button1_2[i].setFont(new Font("Cambria", Font.BOLD, 16)); + panel3_1.add(button3_1[i]); + } + String[] s5 = {"Dad","Mom","husband","wife","son","e_brother","brother","e_sister","sister"}; + for (int i = 0; i < s5.length; i++) {//历史记录键按钮 + button3_2[i] = new JButton(s5[i]); + button3_2[i].addActionListener(new ActionListen()); + button3_2[i].setFont(new Font("Cambria", Font.BOLD, 16)); + panel3_2.add(button3_2[i]); + } panel2_1.add(button2_1); button2_1.addActionListener(new ActionListen()); text.addActionListener(new ActionListen()); @@ -81,24 +115,67 @@ public class Calculation extends JFrame { panel1.add(panel1_1,BorderLayout.CENTER);//将子容器添加到父容器 panel2.add(panel2_1,BorderLayout.NORTH); panel2.add(panel2_2,BorderLayout.CENTER); + panel3.add(panel3_1,BorderLayout.NORTH); + panel3.add(panel3_2,BorderLayout.CENTER); - frame.add(text,BorderLayout.NORTH);//文本框的位置 - frame.add(panel1,BorderLayout.CENTER);//将panel1设置在中部区域 - frame.add(panel2,BorderLayout.WEST);//将panel2设置在西部区域 + frame1.add(text,BorderLayout.NORTH);//文本框的位置 + frame1.add(panel1,BorderLayout.CENTER);//将panel1设置在中部区域 + frame1.add(panel2,BorderLayout.WEST);//将panel2设置在西部区域 - frame.setVisible(true); - frame.setResizable(true); + frame2.add(text2,BorderLayout.NORTH);//文本框的位置 + frame2.add(panel3,BorderLayout.CENTER);//将panel设置在中部区域 + + + frame1.setVisible(true); + frame1.setResizable(true); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + validate(); } void init() { - menubar=new JMenuBar(); - menu=new JMenu("其他类型"); - menubar.setPreferredSize(new Dimension(200,24)); - - frame.setJMenuBar(menubar); + menubar1=new JMenuBar(); + menu1=new JMenu("类型"); + menubar2=new JMenuBar(); + menu2=new JMenu("类型"); + otheritem1= new JMenuItem("标准计算器"); + otheritem2= new JMenuItem("亲戚关系计算器"); + otheritem1.addActionListener(new ItemListen1()); + otheritem2.addActionListener(new ItemListen2()); + otheritem3= new JMenuItem("标准计算器"); + otheritem4= new JMenuItem("亲戚关系计算器"); + otheritem3.addActionListener(new ItemListen1()); + otheritem4.addActionListener(new ItemListen2()); + menu1.add(otheritem1); + menu1.add(otheritem2); + menubar1.add(menu1); + menubar1.setPreferredSize(new Dimension(200,24)); + frame1.setJMenuBar(menubar1); + menu2.add(otheritem3); + menu2.add(otheritem4); + menubar2.add(menu2); + menubar2.setPreferredSize(new Dimension(200,24)); + frame2.setJMenuBar(menubar2); + } + public class ItemListen1 implements ActionListener{ + public void actionPerformed(ActionEvent e) { + changeThis1(); + } + } + public class ItemListen2 implements ActionListener{ + public void actionPerformed(ActionEvent e) { + changeThis2(); + } + } + public void changeThis1(){ + frame1.setVisible(true); + frame2.setVisible(false); + } + public void changeThis2(){ + frame1.setVisible(false); + frame2.setVisible(true); + } public class ActionListen implements ActionListener{ @@ -194,4 +271,3 @@ public class Calculation extends JFrame { }} -//原文链接:https://blog.csdn.net/eternity_memory/article/details/122277655 \ No newline at end of file diff --git a/src/java2022spring/Init.java b/src/java2022spring/Init.java new file mode 100644 index 0000000..139597f --- /dev/null +++ b/src/java2022spring/Init.java @@ -0,0 +1,2 @@ + + -- Gitee From 9bb24a604f7a3c104b0a9635fdcc8a3fa4cdfb3e Mon Sep 17 00:00:00 2001 From: fanfan <2310248551@qq.com> Date: Tue, 7 Jun 2022 22:24:32 +0800 Subject: [PATCH 5/5] finished the project --- src/java2022spring/Calculation.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/java2022spring/Calculation.java b/src/java2022spring/Calculation.java index 41d2c33..50d72b6 100644 --- a/src/java2022spring/Calculation.java +++ b/src/java2022spring/Calculation.java @@ -2,15 +2,17 @@ package java2022spring; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; + import javax.swing.*; public class Calculation extends JFrame { + JFrame frame1= new JFrame("标准计算器"); JFrame frame2= new JFrame("亲戚关系计算器"); JMenuBar menubar1,menubar2; JMenu menu1,menu2; - JMenuItem otheritem1,otheritem2,otheritem3,otheritem4; - double n1,n2;//记录两个数 + JMenuItem otheritem1,otheritem2,otheritem3,otheritem4; //在设计上学习CSDN用户Eternity_GQM的计算器设计思想。 + double n1,n2;//记录两个数 //blog.csdn.net/eternity_memory/article/details/122277655 boolean finishedReading;//记录是否完成操作 String operator;//记录操作符 public JTextField text = new JTextField();//标准计算器的文本框 @@ -51,7 +53,7 @@ public class Calculation extends JFrame { panel1_1.setBackground(new Color(160,238,225)); panel1_2.setBackground(new Color(160,238,225)); panel2_2.setBackground(new Color(160,238,225)); - + text.setHorizontalAlignment(JTextField.RIGHT); text.setPreferredSize(new Dimension(200,44)); @@ -118,10 +120,11 @@ public class Calculation extends JFrame { panel3.add(panel3_1,BorderLayout.NORTH); panel3.add(panel3_2,BorderLayout.CENTER); + frame1.add(text,BorderLayout.NORTH);//文本框的位置 frame1.add(panel1,BorderLayout.CENTER);//将panel1设置在中部区域 - frame1.add(panel2,BorderLayout.WEST);//将panel2设置在西部区域 - + + frame2.add(text2,BorderLayout.NORTH);//文本框的位置 frame2.add(panel3,BorderLayout.CENTER);//将panel设置在中部区域 @@ -133,6 +136,7 @@ public class Calculation extends JFrame { validate(); } void init() { + menubar1=new JMenuBar(); menu1=new JMenu("类型"); menubar2=new JMenuBar(); @@ -269,5 +273,4 @@ public class Calculation extends JFrame { -}} - +}} \ No newline at end of file -- Gitee