From 454df7482ee2a580ff25fc14d0aa1500c052411e Mon Sep 17 00:00:00 2001 From: Gary <9251719+gary1688@user.noreply.gitee.com> Date: Wed, 9 Jun 2021 23:39:34 +0800 Subject: [PATCH 1/4] =?UTF-8?q?add=20Cal.java.=20=E4=B8=BB=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cal.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Cal.java diff --git a/Cal.java b/Cal.java new file mode 100644 index 0000000..372c806 --- /dev/null +++ b/Cal.java @@ -0,0 +1,9 @@ +package java2020spring; +import javax.swing.JFrame; +public class Calmain { +public static void main(String args[]) { + Cal Win = new Cal(); + Win.setVisible(true); + Win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + } +} \ No newline at end of file -- Gitee From c9ad13edfd295c48edc7bbd4a17eb8abb6d3f8d3 Mon Sep 17 00:00:00 2001 From: Gary <9251719+gary1688@user.noreply.gitee.com> Date: Wed, 9 Jun 2021 23:40:41 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20Cal.?= =?UTF-8?q?java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cal.java | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 Cal.java diff --git a/Cal.java b/Cal.java deleted file mode 100644 index 372c806..0000000 --- a/Cal.java +++ /dev/null @@ -1,9 +0,0 @@ -package java2020spring; -import javax.swing.JFrame; -public class Calmain { -public static void main(String args[]) { - Cal Win = new Cal(); - Win.setVisible(true); - Win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - } -} \ No newline at end of file -- Gitee From 2d65ee527cce65da6cf7ed790d6ba85abd089ba2 Mon Sep 17 00:00:00 2001 From: Gary <9251719+gary1688@user.noreply.gitee.com> Date: Wed, 9 Jun 2021 23:41:14 +0800 Subject: [PATCH 3/4] =?UTF-8?q?add=20Calmain.java.=20=E4=B8=BB=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Calmain.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Calmain.java diff --git a/Calmain.java b/Calmain.java new file mode 100644 index 0000000..372c806 --- /dev/null +++ b/Calmain.java @@ -0,0 +1,9 @@ +package java2020spring; +import javax.swing.JFrame; +public class Calmain { +public static void main(String args[]) { + Cal Win = new Cal(); + Win.setVisible(true); + Win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + } +} \ No newline at end of file -- Gitee From 16029c79508bea33ddfde67f60f34fd115704650 Mon Sep 17 00:00:00 2001 From: Gary <9251719+gary1688@user.noreply.gitee.com> Date: Wed, 9 Jun 2021 23:42:46 +0800 Subject: [PATCH 4/4] =?UTF-8?q?add=20Cal.java.=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=99=A8=E7=95=8C=E9=9D=A2=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=8F=8A=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cal.java | 177 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 Cal.java diff --git a/Cal.java b/Cal.java new file mode 100644 index 0000000..cdce5a3 --- /dev/null +++ b/Cal.java @@ -0,0 +1,177 @@ +package java2020spring; +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +public class Cal extends JFrame implements ActionListener { + /** + * + */ + private static final long serialVersionUID = 7234416171012693398L; + private final String[] Butt = { "Back", "C" }; + private final String[] Keys = { "/","sqrt" , "7", "8", "9","+", "4", "5", "6", "-", "1", "2", "3","*","0",".","=", "1/x" }; + private JButton butts[] = new JButton[Butt.length]; + private JButton keys[] = new JButton[Keys.length]; + private JTextField resultText = new JTextField("0"); + private boolean firstNum = true; + private boolean operateValidFlag = true; + private double resultNum = 0.0; + private String operator = "="; + + private double getNumberFromText() { + double result = 0.0; + try { + result = Double.valueOf(resultText.getText()).doubleValue(); + } + catch (NumberFormatException e) {} + return result; + } + /*计算器界面布置*/ + public Cal() { + setTitle("Java计算器"); + setBackground(Color.LIGHT_GRAY); + setBounds(500, 150,350,350); + setResizable(true); + JMenuBar menuB = new JMenuBar(); + JMenu menu1=new JMenu("查看(V)"); + JMenu menu2=new JMenu("编辑(E)"); + JMenu menu3=new JMenu("帮助(H)"); + JMenu menu4=new JMenu("计算器类型"); + menuB.add(menu1); + menuB.add(menu2); + menuB.add(menu3); + menuB.add(menu4); + setJMenuBar(menuB); + JMenuItem menuI = new JMenuItem("标准型计算器"); + menu4.add(menuI); + resultText.setHorizontalAlignment(JTextField.RIGHT); + resultText.setBackground(Color.LIGHT_GRAY); + resultText.setFont(new Font("Courir",Font.BOLD,30)); + JPanel Panel1 = new JPanel(); + Panel1.setLayout(new GridLayout(5, 4, 3, 3)); + for (int i = 0; i < Butt.length; i++) { + butts[i] = new JButton(Butt[i]); + Panel1.add(butts[i]); + butts[i].setFont(new Font("Courir",Font.ITALIC,17)); + } + for (int i = 0; i < Keys.length; i++) { + keys[i] = new JButton(Keys[i]); + Panel1.add(keys[i]); + keys[i].setFont(new Font("Courir",Font.PLAIN,18)); + } + keys[16].setBackground(Color.pink); + JPanel panel1 = new JPanel(); + panel1.setLayout(new BorderLayout(3,3)); + panel1.add("Center", Panel1); + JPanel panel2 = new JPanel(); + panel2.setLayout(new BorderLayout()); + panel2.add("Center", resultText); + getContentPane().setLayout(new BorderLayout(3, 5)); + getContentPane().add("North", panel2); + getContentPane().add("Center", panel1); + /*添加监听器*/ + for (int i = 0; i < Keys.length; i++) { + keys[i].addActionListener(this); + } + for (int i = 0; i < Butt.length; i++) { + butts[i].addActionListener(this); + } + } + /*不同事件的处理*/ + public void actionPerformed(ActionEvent e) { + String lab = e.getActionCommand(); + if (lab.equals(Butt[0])) { + handleBack(); + } + else if (lab.equals(Butt[1])) { + handleC(); + } + else if ("0123456789.".indexOf(lab) >= 0) { + handleNumber(lab); + } + else + handleOperator(lab); + } + /*回退处理*/ + private void handleBack() { + String text = resultText.getText(); + int i = text.length(); + if (i > 0) { + text = text.substring(0, i - 1); + if (text.length() == 0) { + resultText.setText("0"); + firstNum = true; + operator = "="; + } + else + resultText.setText(text); + } + } + /*清空处理*/ + private void handleC() { + resultText.setText("0"); + firstNum = true; + operator = "="; + } + /*数字字符处理*/ + private void handleNumber(String key) { + if (firstNum) { + resultText.setText(key); + } + else if (key.equals(".")) { + resultText.setText(resultText.getText() + "."); + } + else if (!key.equals(".")) { + resultText.setText(resultText.getText() + key); + } + firstNum = false; + } + /*运算处理*/ + private void handleOperator(String key) { + if (operator.equals("/")) { + if (getNumberFromText() == 0.0) { + operateValidFlag = false; + resultText.setText("除数不能为零!"); + } + else + resultNum= resultNum/getNumberFromText(); + } + else if (operator.equals("1/x")) { + if (resultNum == 0.0) { + operateValidFlag = false; + resultText.setText("零没有倒数!"); + } + else + resultNum = 1 / resultNum; + } + else if (operator.equals("+")) { + resultNum += getNumberFromText(); + } + else if (operator.equals("-")) { + resultNum -= getNumberFromText(); + } + else if (operator.equals("*")) { + resultNum *= getNumberFromText(); + } + else if (operator.equals("sqrt")) { + resultNum = Math.sqrt(resultNum); + } + else if (operator.equals("=")) { + resultNum = getNumberFromText(); + } + if (operateValidFlag) { + long m1; + double m2; + m1 = (long) resultNum; + m2 = resultNum - m1; + if (m2 == 0) { + resultText.setText(String.valueOf (m1)); + } + else { + resultText.setText(String.valueOf(resultNum)); + } + } + operator = key; + firstNum = true; + operateValidFlag = true; + } +} -- Gitee