From 7d6549b5d402bf71f6e80166c9a7272ade80654e Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Mon, 23 May 2022 09:00:46 +0800 Subject: [PATCH 01/16] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E4=B8=94=E5=91=BD=E5=90=8D=EF=BC=8C=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E4=BA=86=E5=A4=A7=E5=B0=8F=EF=BC=8C=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=EF=BC=8C=E4=B8=8D=E5=8F=AF=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E3=80=82=E7=AA=97=E4=BD=93=E7=9A=84=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E4=B8=BABorderLayout=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz/Calculator.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/calculator_zjz/Calculator.java diff --git a/src/calculator_zjz/Calculator.java b/src/calculator_zjz/Calculator.java new file mode 100644 index 0000000..2000b2c --- /dev/null +++ b/src/calculator_zjz/Calculator.java @@ -0,0 +1,19 @@ +package calculator_zjz; + +import java.awt.*; +import javax.swing.*; + +public class Calculator extends JFrame { + + public static void main(String[] args) { + + JFrame window = new JFrame("张家中0330的计算器");//新建一个窗口并且命名 + window.setBounds(100,100,350, 500);;//设置窗口的大小,距屏幕左边100个像素,上方100个像素,窗口宽350,高500 + window.setBackground(Color.white);//设置窗口的背景色为白色 + window.setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭图标时关闭窗口 + window.setVisible(true);//设置窗口是可见的 + window.setResizable(false);//设置窗口不可调整大小 + window.setLayout(new BorderLayout());//设置窗体的布局为BorderLayout + } + +} -- Gitee From 1e1586d5220398b598df315fbef12c4264303990 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Tue, 24 May 2022 10:10:07 +0800 Subject: [PATCH 02/16] =?UTF-8?q?=E6=96=B0=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E7=AA=97=E4=BD=93=E5=8C=97=E9=9D=A2=E5=92=8C=E4=B8=AD=E9=97=B4?= =?UTF-8?q?=E7=9A=84=E6=8E=A7=E4=BB=B6=E3=80=82=20=E5=85=B6=E4=B8=AD?= =?UTF-8?q?=E5=8C=97=E9=9D=A2=E7=9A=84=E6=9C=89=E6=96=87=E6=9C=AC=E6=A1=86?= =?UTF-8?q?=EF=BC=8C=E6=B8=85=E9=9B=B6=E6=8C=89=E9=92=AE=E3=80=82=20?= =?UTF-8?q?=E4=B8=AD=E9=97=B4=E4=BD=BF=E7=94=A8=E4=BA=86GridLayout?= =?UTF-8?q?=E5=B8=83=E5=B1=80=EF=BC=8C=E6=9C=89=E5=B8=B8=E7=94=A8=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E6=8C=89=E9=92=AE=EF=BC=8C=E5=8A=A0=E5=87=8F?= =?UTF-8?q?=E4=B9=98=E9=99=A4=E4=BB=A5=E5=8F=8A=E5=B0=8F=E6=95=B0=E7=82=B9?= =?UTF-8?q?=E3=80=82=20=E5=B0=86=E7=AA=97=E5=8F=A3=E7=9A=84=E5=AE=BD?= =?UTF-8?q?=E4=BB=8E350=E8=B0=83=E6=95=B4=E4=B8=BA300=EF=BC=8C=E9=AB=98?= =?UTF-8?q?=E4=BB=8E500=E8=B0=83=E6=95=B4=E4=B8=BA450=EF=BC=8C=E4=BD=BF?= =?UTF-8?q?=E5=85=B6=E7=9C=8B=E8=B5=B7=E6=9D=A5=E6=9B=B4=E5=8A=A0=E5=8D=8F?= =?UTF-8?q?=E8=B0=83=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz/Calculator.java | 32 ++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/calculator_zjz/Calculator.java b/src/calculator_zjz/Calculator.java index 2000b2c..9906efa 100644 --- a/src/calculator_zjz/Calculator.java +++ b/src/calculator_zjz/Calculator.java @@ -8,12 +8,40 @@ public class Calculator extends JFrame { public static void main(String[] args) { JFrame window = new JFrame("张家中0330的计算器");//新建一个窗口并且命名 - window.setBounds(100,100,350, 500);;//设置窗口的大小,距屏幕左边100个像素,上方100个像素,窗口宽350,高500 + + JPanel cal_north = new JPanel();//添加北面的控件 + JTextField input_text = new JTextField();//在北面添加一个组件,可以输入文本 + JButton C_button = new JButton("C");//在北面添加一个按钮,命名为"C",用于清零的操作 + input_text.setPreferredSize(new Dimension(230,50));//将文本框的宽度设置为230,高度设置为30 + C_button.setForeground(Color.RED);//将按钮C_button的颜色设置为红色 + cal_north.add(input_text);//把input_text添加到北面的面板中,用于输入数字 + cal_north.add(C_button);//把C_button添加到北面的面板中,用于清零操作 + + JPanel cal_center = new JPanel();//添加中间的控件 + cal_center.setLayout(new GridLayout(4,4));//使用GridLayoout布局,添加4*4个组件 + String center_button_name = "123+456-789*0.=/";//中间的按钮的名字 + for(int i=0;i<16;i++) {//使用for循环将16个按钮添加到中间的面板上,并命名 + String temp = center_button_name.substring(i, i+1); + JButton center_button = new JButton(); + center_button.setText(temp); + if(temp.equals("+")||temp.equals("-")||temp.equals("*")||temp.equals("=") + ||temp.equals(".")||temp.equals("/")) { + center_button.setFont(new Font("粗体",Font.BOLD,16));//将+-=*/.设置为粗体 + center_button.setForeground(Color.RED);//将+-=*/.的颜色设置为红色 + } + cal_center.add(center_button); + } + + window.setBounds(100,100,300, 450);;//设置窗口的大小,距屏幕左边100个像素,上方100个像素,窗口宽350,高500 window.setBackground(Color.white);//设置窗口的背景色为白色 - window.setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭图标时关闭窗口 + window.setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭图标时关闭窗口,并且结束程序 window.setVisible(true);//设置窗口是可见的 window.setResizable(false);//设置窗口不可调整大小 window.setLayout(new BorderLayout());//设置窗体的布局为BorderLayout + + window.add(cal_north,BorderLayout.NORTH);//把北面的控件添加到窗体中 + window.add(cal_center,BorderLayout.CENTER);//把中间的控件添加到窗体中 + } } -- Gitee From 05a7c1cd056e9f34e7c9cdbf5ce89f2b7b732e9c Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Tue, 24 May 2022 13:24:02 +0800 Subject: [PATCH 03/16] =?UTF-8?q?=E6=9C=AA=E6=94=B9=E5=8F=98=E4=BB=BB?= =?UTF-8?q?=E4=BD=95=E4=B8=9C=E8=A5=BF=EF=BC=8C=E5=8F=AA=E6=98=AF=E5=B0=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8A=BD=E8=B1=A1=E6=88=90=E4=BA=86=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=8C=E8=AE=A9=E4=BB=A3=E7=A0=81=E6=9B=B4=E7=AE=80?= =?UTF-8?q?=E6=B4=81=EF=BC=8C=E6=8F=90=E9=AB=98=E5=8F=AF=E8=AF=BB=E6=80=A7?= =?UTF-8?q?=E5=92=8C=E5=A4=8D=E7=94=A8=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz/Calculator.java | 88 +++++++++++++++++++----------- 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/src/calculator_zjz/Calculator.java b/src/calculator_zjz/Calculator.java index 9906efa..b5b20c0 100644 --- a/src/calculator_zjz/Calculator.java +++ b/src/calculator_zjz/Calculator.java @@ -5,43 +5,65 @@ import javax.swing.*; public class Calculator extends JFrame { - public static void main(String[] args) { + JPanel cal_north = new JPanel(); //新建北面的面板 + JTextField input_text = new JTextField(); //声明了组件:文本框,用于输入文本 + JButton C_Button = new JButton("C"); //声明了组件:按钮(命名为C,用于清零操作) + + JPanel cal_center = new JPanel(); //新建中间的面板 + + public Calculator() { //使用构造器对窗口进行各种操作 + this.initialize(); //调用方法对窗口进行初始化 + this.addNorth(); //调用方法添加北面的组件 + this.addCenBtn(); //调用方法添加中间的组件 + } + + public void initialize() { //将对窗口的初始化抽成一个方法 + + this.setTitle("张家中0330的计算器"); //命名一个窗口 + this.setBounds(100,100,300, 450); //设置窗口的大小(宽300,高450)及初始位置(距屏幕左边和上方均为100个像素点) + this.setLayout(new BorderLayout()); //设置窗体的布局为BorderLayout + this.setResizable(false); //设置窗体不可调整大小 + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击关闭时结束程序 + + } + + public void addNorth() { //将添加北面组件的代码抽成一个方法 + + this.input_text.setPreferredSize(new Dimension(230,50)); //将文本框的宽度设置为230,高度设置为50 + cal_north.add(input_text); //把文本框组件添加到北面的面板 + + this.C_Button.setForeground(Color.RED); //把清零按钮(C)设置为红色 + cal_north.add(C_Button); //把按钮组件添加到北面的面板 - JFrame window = new JFrame("张家中0330的计算器");//新建一个窗口并且命名 - - JPanel cal_north = new JPanel();//添加北面的控件 - JTextField input_text = new JTextField();//在北面添加一个组件,可以输入文本 - JButton C_button = new JButton("C");//在北面添加一个按钮,命名为"C",用于清零的操作 - input_text.setPreferredSize(new Dimension(230,50));//将文本框的宽度设置为230,高度设置为30 - C_button.setForeground(Color.RED);//将按钮C_button的颜色设置为红色 - cal_north.add(input_text);//把input_text添加到北面的面板中,用于输入数字 - cal_north.add(C_button);//把C_button添加到北面的面板中,用于清零操作 - - JPanel cal_center = new JPanel();//添加中间的控件 - cal_center.setLayout(new GridLayout(4,4));//使用GridLayoout布局,添加4*4个组件 - String center_button_name = "123+456-789*0.=/";//中间的按钮的名字 - for(int i=0;i<16;i++) {//使用for循环将16个按钮添加到中间的面板上,并命名 - String temp = center_button_name.substring(i, i+1); - JButton center_button = new JButton(); - center_button.setText(temp); - if(temp.equals("+")||temp.equals("-")||temp.equals("*")||temp.equals("=") - ||temp.equals(".")||temp.equals("/")) { - center_button.setFont(new Font("粗体",Font.BOLD,16));//将+-=*/.设置为粗体 - center_button.setForeground(Color.RED);//将+-=*/.的颜色设置为红色 + this.add(cal_north,BorderLayout.NORTH); //把北面的面板添加到窗体的北面 + + } + + public void addCenBtn() { //将添加中间组件的代码抽成一个方法 + + String cen_btn_name = "123+456-789*0.=/"; //中间的按钮的名字,数字0-9,加减乘除以及小数点 + + this.cal_center.setLayout(new GridLayout(4,4)); //使用GridLayout布局,4行4列,即4*4个组件 + for(int i=0;i<16;i++) { //使用for循环将16个按钮添加到中间的面板上,并命名 + String temp = cen_btn_name.substring(i,i+1); //利用substring方法截取字符串,即按钮的名字 + JButton center_btn = new JButton(); //新建中间的按钮 + center_btn.setText(temp); //给各个按钮命名 + if(temp.equals("+")||temp.equals("-")||temp.equals("/")|| + temp.equals(".")||temp.equals("*")||temp.equals("=")) { + center_btn.setFont(new Font("粗体",Font.BOLD,20)); //将+-=*/.设置为粗体 + center_btn.setForeground(Color.RED); //将+-=*/.的颜色设置为红色 } - cal_center.add(center_button); + cal_center.add(center_btn); //把处理好的按钮添加到中间 } - window.setBounds(100,100,300, 450);;//设置窗口的大小,距屏幕左边100个像素,上方100个像素,窗口宽350,高500 - window.setBackground(Color.white);//设置窗口的背景色为白色 - window.setDefaultCloseOperation(EXIT_ON_CLOSE);//点击关闭图标时关闭窗口,并且结束程序 - window.setVisible(true);//设置窗口是可见的 - window.setResizable(false);//设置窗口不可调整大小 - window.setLayout(new BorderLayout());//设置窗体的布局为BorderLayout + this.add(cal_center,BorderLayout.CENTER); //把中间的控件添加到窗体的中间 - window.add(cal_north,BorderLayout.NORTH);//把北面的控件添加到窗体中 - window.add(cal_center,BorderLayout.CENTER);//把中间的控件添加到窗体中 + } + + public static void main(String[] args) { + + Calculator cal_zjz = new Calculator(); //new一个窗体 + cal_zjz.setVisible(true); //设置窗体是可见的 } - -} +} \ No newline at end of file -- Gitee From 0fde2345174bee4f4ac9b6d71789ea133ad4fa34 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Thu, 26 May 2022 22:57:09 +0800 Subject: [PATCH 04/16] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=9A=E5=88=A9=E7=94=A8=E6=AD=A3=E5=88=99=E8=A1=A8=E8=BE=BE?= =?UTF-8?q?=E5=BC=8F=E6=9D=A5=E8=AE=BE=E7=BD=AE+-*/=3D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 缁欐寜閽坊鍔犱簡鐩戝惉鍣紝褰撶敤榧犳爣鐐瑰嚮0123456789 .鏃讹紝浼氭樉绀哄湪鏂囨湰妗嗕腑锛屽苟涓旇缃瓧浣撻潬鍙虫樉绀恒傚杩愮畻绗﹁繘琛屼簡涓浜涘鐞嗭紝褰撹緭鍏ヤ簡绗竴涓暟瀛楋紝骞剁偣鍑昏繍绠楃鏃讹紝娓呯┖鏂囨湰妗嗭紝浠ヤ究杈撳叆绗簩涓暟瀛椾互杩涜杩愮畻 --- src/calculator_zjz/Calculator.java | 33 ++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/src/calculator_zjz/Calculator.java b/src/calculator_zjz/Calculator.java index b5b20c0..e0f9c4f 100644 --- a/src/calculator_zjz/Calculator.java +++ b/src/calculator_zjz/Calculator.java @@ -2,8 +2,9 @@ package calculator_zjz; import java.awt.*; import javax.swing.*; +import java.awt.event.*; -public class Calculator extends JFrame { +public class Calculator extends JFrame implements ActionListener { JPanel cal_north = new JPanel(); //新建北面的面板 JTextField input_text = new JTextField(); //声明了组件:文本框,用于输入文本 @@ -27,32 +28,46 @@ public class Calculator extends JFrame { } + /*****************添加北面的组件*******************/ + public void addNorth() { //将添加北面组件的代码抽成一个方法 + this.input_text.setFont(new Font("粗体",Font.PLAIN,20)); //将输入到文本框的字体设置为粗体,字号20 this.input_text.setPreferredSize(new Dimension(230,50)); //将文本框的宽度设置为230,高度设置为50 cal_north.add(input_text); //把文本框组件添加到北面的面板 + this.C_Button.setFont(new Font("粗体",Font.PLAIN,15)); //把清零按钮字体调成粗体,字号15 this.C_Button.setForeground(Color.RED); //把清零按钮(C)设置为红色 cal_north.add(C_Button); //把按钮组件添加到北面的面板 this.add(cal_north,BorderLayout.NORTH); //把北面的面板添加到窗体的北面 + /*****************添加中间的组件*******************/ + } public void addCenBtn() { //将添加中间组件的代码抽成一个方法 String cen_btn_name = "123+456-789*0.=/"; //中间的按钮的名字,数字0-9,加减乘除以及小数点 + String regex = "[\\+\\-*/.=]"; this.cal_center.setLayout(new GridLayout(4,4)); //使用GridLayout布局,4行4列,即4*4个组件 for(int i=0;i<16;i++) { //使用for循环将16个按钮添加到中间的面板上,并命名 String temp = cen_btn_name.substring(i,i+1); //利用substring方法截取字符串,即按钮的名字 JButton center_btn = new JButton(); //新建中间的按钮 center_btn.setText(temp); //给各个按钮命名 - if(temp.equals("+")||temp.equals("-")||temp.equals("/")|| - temp.equals(".")||temp.equals("*")||temp.equals("=")) { - center_btn.setFont(new Font("粗体",Font.BOLD,20)); //将+-=*/.设置为粗体 + if(temp.matches(regex)) { + center_btn.setFont(new Font("粗体",Font.BOLD,30)); //将+-=*/.设置为粗体,字体大小为30 center_btn.setForeground(Color.RED); //将+-=*/.的颜色设置为红色 } + //if(temp.equals("+")||temp.equals("-")||temp.equals("/")|| + // temp.equals(".")||temp.equals("*")||temp.equals("=")) { + // center_btn.setFont(new Font("粗体",Font.BOLD,30)); 将+-=*/.设置为粗体,字体大小为30 + // center_btn.setForeground(Color.RED); 将+-=*/.的颜色设置为红色 + //} + //else {center_btn.setFont(new Font("粗体",Font.BOLD,20)); } 将1234567890设置为粗体,字体大小为20 + + center_btn.addActionListener(this); //给窗体的每一个按钮添加一个监视器 cal_center.add(center_btn); //把处理好的按钮添加到中间 } @@ -66,4 +81,14 @@ public class Calculator extends JFrame { cal_zjz.setVisible(true); //设置窗体是可见的 } + + public void actionPerformed(ActionEvent e) { //重写actionPerformed方法 + String click_button = e.getActionCommand(); //获取按钮(0123456789 /.+=-)上的值 + if(".0123456789".indexOf(click_button) != -1) { + this.input_text.setText(input_text.getText() + click_button); //假如点击的按钮是(0123456789 .),就在文本框显示出来 + this.input_text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 + } + + } + } \ No newline at end of file -- Gitee From d79600229d3b082db2025084a19eae8b40751f05 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Fri, 27 May 2022 21:51:27 +0800 Subject: [PATCH 05/16] =?UTF-8?q?=E6=96=B0=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=AE=9E=E7=8E=B0=E4=BA=86=E8=BF=90?= =?UTF-8?q?=E7=AE=97=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B9=B6=E4=B8=94?= =?UTF-8?q?=E6=B8=85=E9=9B=B6=E6=8C=89=E9=92=AE=E5=8F=AF=E4=BB=A5=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E6=B8=85=E9=9B=B6=E6=93=8D=E4=BD=9C=E3=80=82=E6=AD=A4?= =?UTF-8?q?=E6=97=B6=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84=E6=9C=80=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E5=8A=9F=E8=83=BD=E5=B7=B2=E7=BB=8F=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E5=AE=9E=E7=8E=B0=EF=BC=8C=E4=BD=86=E4=BB=8D=E7=84=B6?= =?UTF-8?q?=E5=8D=81=E5=88=86=E7=B2=97=E7=B3=99=EF=BC=8C=E5=90=8E=E7=BB=AD?= =?UTF-8?q?=E4=BC=9A=E5=AE=8C=E5=96=84=E4=BB=A3=E7=A0=81=EF=BC=8C=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=BC=98=E5=8C=96=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz/Calculator.java | 42 +++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/calculator_zjz/Calculator.java b/src/calculator_zjz/Calculator.java index e0f9c4f..726a4fe 100644 --- a/src/calculator_zjz/Calculator.java +++ b/src/calculator_zjz/Calculator.java @@ -6,11 +6,11 @@ import java.awt.event.*; public class Calculator extends JFrame implements ActionListener { - JPanel cal_north = new JPanel(); //新建北面的面板 - JTextField input_text = new JTextField(); //声明了组件:文本框,用于输入文本 - JButton C_Button = new JButton("C"); //声明了组件:按钮(命名为C,用于清零操作) + private JPanel cal_north = new JPanel(); //新建北面的面板 + private JTextField input_text = new JTextField(); //声明了组件:文本框,用于输入文本 + private JButton C_Button = new JButton("C"); //声明了组件:按钮(命名为C,用于清零操作) - JPanel cal_center = new JPanel(); //新建中间的面板 + private JPanel cal_center = new JPanel(); //新建中间的面板 public Calculator() { //使用构造器对窗口进行各种操作 this.initialize(); //调用方法对窗口进行初始化 @@ -40,6 +40,12 @@ public class Calculator extends JFrame implements ActionListener { this.C_Button.setForeground(Color.RED); //把清零按钮(C)设置为红色 cal_north.add(C_Button); //把按钮组件添加到北面的面板 + C_Button.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + input_text.setText(""); //利用内部类,添加监视器,当点击C(清零)按钮时就清空文本框 + } + }); + this.add(cal_north,BorderLayout.NORTH); //把北面的面板添加到窗体的北面 /*****************添加中间的组件*******************/ @@ -49,7 +55,7 @@ public class Calculator extends JFrame implements ActionListener { public void addCenBtn() { //将添加中间组件的代码抽成一个方法 String cen_btn_name = "123+456-789*0.=/"; //中间的按钮的名字,数字0-9,加减乘除以及小数点 - String regex = "[\\+\\-*/.=]"; + String regex = "[\\+\\-*/.=]"; //正则表达式,用于判断,优化代码 this.cal_center.setLayout(new GridLayout(4,4)); //使用GridLayout布局,4行4列,即4*4个组件 for(int i=0;i<16;i++) { //使用for循环将16个按钮添加到中间的面板上,并命名 @@ -60,6 +66,7 @@ public class Calculator extends JFrame implements ActionListener { center_btn.setFont(new Font("粗体",Font.BOLD,30)); //将+-=*/.设置为粗体,字体大小为30 center_btn.setForeground(Color.RED); //将+-=*/.的颜色设置为红色 } + else {center_btn.setFont(new Font("粗体",Font.BOLD,20)); } //将1234567890设置为粗体,字体大小为20 //if(temp.equals("+")||temp.equals("-")||temp.equals("/")|| // temp.equals(".")||temp.equals("*")||temp.equals("=")) { // center_btn.setFont(new Font("粗体",Font.BOLD,30)); 将+-=*/.设置为粗体,字体大小为30 @@ -82,13 +89,36 @@ public class Calculator extends JFrame implements ActionListener { } + private String firstNumber = null; //用于记录第一次输入的值 + private String operator = null; //点击的运算符 + public void actionPerformed(ActionEvent e) { //重写actionPerformed方法 String click_button = e.getActionCommand(); //获取按钮(0123456789 /.+=-)上的值 if(".0123456789".indexOf(click_button) != -1) { this.input_text.setText(input_text.getText() + click_button); //假如点击的按钮是(0123456789 .),就在文本框显示出来 this.input_text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 } - + else if(click_button.matches("[\\+\\-*/]{1}")) { //+-*/出现一次 + operator = click_button; //记录点击的运算符 + firstNumber = this.input_text.getText(); //记录第一次输入的值 + this.input_text.setText(""); //输入第一次的值后,假如点击运算符,就清空文本框,以便输入第二次的值 + } + else if(click_button.equals("=")) { //点击了=后,就执行运算的操作 + Double a = Double.valueOf(firstNumber); //记录点击运算符之前输入的数字(并将String型转换为double型) + Double b = Double.valueOf(this.input_text.getText()); //记录从文本框获取点击运算符之后输入的值 + Double result = null; //用于记录运算结果 + switch(operator) { + case "+": result = a + b; break; //点击+号就执行加运算 + case "-": result = a - b; break; //点击-号就执行减运算 + case "*": result = a * b; break; //点击*号就执行乘运算 + case "/": + if(b != 0) { + result = a / b; //点击/号,且分母不为0就执行除运算 + } + break; + } + this.input_text.setText(result.toString()); //将运算结果显示在文本框中 + } } } \ No newline at end of file -- Gitee From fc2454687df3f4dff543e73d8b0300a8490e4423 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Mon, 30 May 2022 23:05:16 +0800 Subject: [PATCH 06/16] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=99=A8=E6=96=B0?= =?UTF-8?q?=E7=89=88=E6=9C=AC(=E6=96=B0=E5=BB=BA=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E7=B1=BB)=EF=BC=8C=E4=BB=A3=E7=A0=81=E7=9B=AE?= =?UTF-8?q?=E5=89=8D=E4=BB=8D=E7=84=B6=E5=92=8C=E4=B8=8A=E4=B8=80=E4=BB=A3?= =?UTF-8?q?=E4=B8=80=E6=A0=B7=EF=BC=8C=E5=90=8E=E7=BB=AD=E4=BC=9A=E5=AE=8C?= =?UTF-8?q?=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz/Calculator.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/calculator_zjz/Calculator.java b/src/calculator_zjz/Calculator.java index 726a4fe..09ee3ac 100644 --- a/src/calculator_zjz/Calculator.java +++ b/src/calculator_zjz/Calculator.java @@ -15,7 +15,7 @@ public class Calculator extends JFrame implements ActionListener { public Calculator() { //使用构造器对窗口进行各种操作 this.initialize(); //调用方法对窗口进行初始化 this.addNorth(); //调用方法添加北面的组件 - this.addCenBtn(); //调用方法添加中间的组件 + this.addCenterButton(); //调用方法添加中间的组件 } public void initialize() { //将对窗口的初始化抽成一个方法 @@ -47,12 +47,11 @@ public class Calculator extends JFrame implements ActionListener { }); this.add(cal_north,BorderLayout.NORTH); //把北面的面板添加到窗体的北面 + } /*****************添加中间的组件*******************/ - - } - public void addCenBtn() { //将添加中间组件的代码抽成一个方法 + public void addCenterButton() { //将添加中间组件的代码抽成一个方法 String cen_btn_name = "123+456-789*0.=/"; //中间的按钮的名字,数字0-9,加减乘除以及小数点 String regex = "[\\+\\-*/.=]"; //正则表达式,用于判断,优化代码 -- Gitee From ee35828730ec7a5d2675557f411417b1509bed89 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Mon, 30 May 2022 23:15:21 +0800 Subject: [PATCH 07/16] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=8C=85=EF=BC=8C=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84?= =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_upgrade_zjz/Cal_Btu.java | 6 +++ .../Calculator_two.java | 45 +++++++++++++++++++ src/calculator_upgrade_zjz/Math.java | 10 +++++ 3 files changed, 61 insertions(+) create mode 100644 src/calculator_upgrade_zjz/Cal_Btu.java create mode 100644 src/calculator_upgrade_zjz/Calculator_two.java create mode 100644 src/calculator_upgrade_zjz/Math.java diff --git a/src/calculator_upgrade_zjz/Cal_Btu.java b/src/calculator_upgrade_zjz/Cal_Btu.java new file mode 100644 index 0000000..6655f05 --- /dev/null +++ b/src/calculator_upgrade_zjz/Cal_Btu.java @@ -0,0 +1,6 @@ +package calculator_upgrade_zjz; +//新建Cal_Btu类来处理按钮的事件 + +public class Cal_Btu { + +} diff --git a/src/calculator_upgrade_zjz/Calculator_two.java b/src/calculator_upgrade_zjz/Calculator_two.java new file mode 100644 index 0000000..5ad1a85 --- /dev/null +++ b/src/calculator_upgrade_zjz/Calculator_two.java @@ -0,0 +1,45 @@ +package calculator_upgrade_zjz; + +import java.awt.*; +import javax.swing.*; + + +public class Calculator_two extends JFrame { + + private JPanel cal_north = new JPanel(); //新建北面的面板 + private JTextField input_text = new JTextField(); //声明了组件:文本框,用于输入文本 + + public Calculator_two(){ //使用构造器对窗口进行各种操作 + + this.initialize(); //调用方法对窗口进行初始化 + this.addNorth(); //调用方法添加北面的组件 + + } + + public void initialize() { //将对窗口的初始化抽成一个方法 + + this.setTitle("张家中0330的计算器"); //命名一个窗口 + this.setBounds(100,100,500, 400); //设置窗口的大小(宽500,高400)及初始位置(距屏幕左边和上方均为100个像素点) + this.setLayout(new BorderLayout()); //设置窗体的布局为BorderLayout + this.setResizable(false); //设置窗体不可调整大小 + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击关闭时结束程序 + + } + +/*****************添加北面的组件*******************/ + + public void addNorth() { //将添加北面组件的代码抽成一个方法 + + this.input_text.setFont(new Font("粗体",Font.PLAIN,20)); //将输入到文本框的字体设置为粗体,字号20 + this.input_text.setPreferredSize(new Dimension(475,40)); //将文本框的宽度设置为475,高度设置为40 + cal_north.add(input_text); //把文本框组件添加到北面的面板 + + this.add(cal_north,BorderLayout.NORTH); //把北面的面板添加到窗体的北面 + } + + public static void main(String[] args) { + Calculator_two cal_zjz = new Calculator_two(); //new一个窗体 + cal_zjz.setVisible(true); //设置窗体是可见的 + } + +} diff --git a/src/calculator_upgrade_zjz/Math.java b/src/calculator_upgrade_zjz/Math.java new file mode 100644 index 0000000..d06391d --- /dev/null +++ b/src/calculator_upgrade_zjz/Math.java @@ -0,0 +1,10 @@ +package calculator_upgrade_zjz; +//新建Math类实现 加,减,乘,除的基本操作 + +import java.math.BigDecimal;//数据格式使用BigDecimal对象进行计算,提升精度 + +public class Math { + + + +} -- Gitee From cc3acf59a10a050c499082b67ddcca73851b288b Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Mon, 30 May 2022 23:49:25 +0800 Subject: [PATCH 08/16] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84?= =?UTF-8?q?=E5=90=8E=E7=BB=AD=E5=AE=8C=E5=96=84=E5=88=9B=E5=BB=BA=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=96=B0=E7=9A=84=E5=8C=85=E6=9D=A5=E8=BF=9B=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_upgrade_zjz/Cal_Btu.java | 6 ------ src/calculator_upgrade_zjz/Math.java | 10 ---------- .../Calculator_two.java | 2 +- src/calculator_zjz_two/Dis_Btu.java | 6 ++++++ src/calculator_zjz_two/Math_.java | 7 +++++++ 5 files changed, 14 insertions(+), 17 deletions(-) delete mode 100644 src/calculator_upgrade_zjz/Cal_Btu.java delete mode 100644 src/calculator_upgrade_zjz/Math.java rename src/{calculator_upgrade_zjz => calculator_zjz_two}/Calculator_two.java (95%) create mode 100644 src/calculator_zjz_two/Dis_Btu.java create mode 100644 src/calculator_zjz_two/Math_.java diff --git a/src/calculator_upgrade_zjz/Cal_Btu.java b/src/calculator_upgrade_zjz/Cal_Btu.java deleted file mode 100644 index 6655f05..0000000 --- a/src/calculator_upgrade_zjz/Cal_Btu.java +++ /dev/null @@ -1,6 +0,0 @@ -package calculator_upgrade_zjz; -//新建Cal_Btu类来处理按钮的事件 - -public class Cal_Btu { - -} diff --git a/src/calculator_upgrade_zjz/Math.java b/src/calculator_upgrade_zjz/Math.java deleted file mode 100644 index d06391d..0000000 --- a/src/calculator_upgrade_zjz/Math.java +++ /dev/null @@ -1,10 +0,0 @@ -package calculator_upgrade_zjz; -//新建Math类实现 加,减,乘,除的基本操作 - -import java.math.BigDecimal;//数据格式使用BigDecimal对象进行计算,提升精度 - -public class Math { - - - -} diff --git a/src/calculator_upgrade_zjz/Calculator_two.java b/src/calculator_zjz_two/Calculator_two.java similarity index 95% rename from src/calculator_upgrade_zjz/Calculator_two.java rename to src/calculator_zjz_two/Calculator_two.java index 5ad1a85..2bee10f 100644 --- a/src/calculator_upgrade_zjz/Calculator_two.java +++ b/src/calculator_zjz_two/Calculator_two.java @@ -1,4 +1,4 @@ -package calculator_upgrade_zjz; +package calculator_zjz_two; import java.awt.*; import javax.swing.*; diff --git a/src/calculator_zjz_two/Dis_Btu.java b/src/calculator_zjz_two/Dis_Btu.java new file mode 100644 index 0000000..c113a75 --- /dev/null +++ b/src/calculator_zjz_two/Dis_Btu.java @@ -0,0 +1,6 @@ +package calculator_zjz_two; +//新建一个类,用于处理按钮的监听事件 + +public class Dis_Btu { + +} diff --git a/src/calculator_zjz_two/Math_.java b/src/calculator_zjz_two/Math_.java new file mode 100644 index 0000000..d6f49bd --- /dev/null +++ b/src/calculator_zjz_two/Math_.java @@ -0,0 +1,7 @@ +package calculator_zjz_two; +//新建一个类,实现加减乘除,为提高精度和范围,数据格式都使用BigDecimal对象进行计算 +import java.math.BigDecimal; + +public class Math_ { + +} -- Gitee From 80f7038addf57c482c41ce59ea2c4830a592b43a Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Tue, 31 May 2022 23:35:09 +0800 Subject: [PATCH 09/16] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E4=BB=A3=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E8=AE=A1=E7=AE=97=E5=99=A8=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=9E=84=E6=80=9D=E5=A5=BD=EF=BC=8C=E5=8F=AA=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=BA=86=E6=9C=80=E7=AE=80=E5=8D=95=E7=9A=84=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=90=8E=E7=BB=AD=E7=9A=84=E5=AE=8C=E5=96=84=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=84=9F=E8=A7=89=E6=AF=94=E8=BE=83=E5=9B=B0=E9=9A=BE?= =?UTF-8?q?=EF=BC=8C=E4=BA=8E=E6=98=AF=E9=87=8D=E6=96=B0=E5=BB=BA=E7=AB=8B?= =?UTF-8?q?=E4=BA=86=E4=B8=80=E4=B8=AA=E5=8C=85=E8=BF=9B=E8=A1=8C=E6=96=B0?= =?UTF-8?q?=E4=B8=80=E4=BB=A3=E7=89=88=E6=9C=AC=E7=9A=84=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E5=99=A8=E7=9A=84=E6=9E=84=E5=BB=BA=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz_two/Calculator_two.java | 62 ++++++++++------------ 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/src/calculator_zjz_two/Calculator_two.java b/src/calculator_zjz_two/Calculator_two.java index 2bee10f..e9d3dc8 100644 --- a/src/calculator_zjz_two/Calculator_two.java +++ b/src/calculator_zjz_two/Calculator_two.java @@ -1,45 +1,37 @@ package calculator_zjz_two; -import java.awt.*; -import javax.swing.*; - +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Arrays; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTextField; public class Calculator_two extends JFrame { + + private String[] cen_btn = {"7","8","9","/","sqrt", + "4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="}; //计算器的主体按键 + private String[] west_btn = {"MC","MR","MS","M+"}; //计算器的左边的按键 + private String[] nor_btn = {"Back","CE","C"}; //计算器文本框下的按键 - private JPanel cal_north = new JPanel(); //新建北面的面板 - private JTextField input_text = new JTextField(); //声明了组件:文本框,用于输入文本 - - public Calculator_two(){ //使用构造器对窗口进行各种操作 - - this.initialize(); //调用方法对窗口进行初始化 - this.addNorth(); //调用方法添加北面的组件 - - } - - public void initialize() { //将对窗口的初始化抽成一个方法 + public Calculator_two() { //利用构造器进行操作 - this.setTitle("张家中0330的计算器"); //命名一个窗口 - this.setBounds(100,100,500, 400); //设置窗口的大小(宽500,高400)及初始位置(距屏幕左边和上方均为100个像素点) - this.setLayout(new BorderLayout()); //设置窗体的布局为BorderLayout - this.setResizable(false); //设置窗体不可调整大小 - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击关闭时结束程序 + this.setTitle("张家中的计算器"); //命名一个窗口 + this.setBounds(100,100,500,400); //设置窗口的大小(宽500,高400)及初始位置(距屏幕左边和上方均为100个像素点) + this.setResizable(false); //设置窗体不可调整大小 + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击关闭时结束程序 + this.setVisible(true); //设置窗体是可见的 } - -/*****************添加北面的组件*******************/ - - public void addNorth() { //将添加北面组件的代码抽成一个方法 - - this.input_text.setFont(new Font("粗体",Font.PLAIN,20)); //将输入到文本框的字体设置为粗体,字号20 - this.input_text.setPreferredSize(new Dimension(475,40)); //将文本框的宽度设置为475,高度设置为40 - cal_north.add(input_text); //把文本框组件添加到北面的面板 - - this.add(cal_north,BorderLayout.NORTH); //把北面的面板添加到窗体的北面 - } - + public static void main(String[] args) { - Calculator_two cal_zjz = new Calculator_two(); //new一个窗体 - cal_zjz.setVisible(true); //设置窗体是可见的 - } - + new Calculator_two(); //new一个窗体 } +} \ No newline at end of file -- Gitee From f427fa7fc0525ff3054b7aca86dbfe153b6a6461 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Wed, 1 Jun 2022 18:22:36 +0800 Subject: [PATCH 10/16] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E4=BB=A3=E7=9A=84?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=99=A8=EF=BC=8C=E7=9B=AE=E5=89=8D=E5=B7=B2?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E5=B8=83=E5=B1=80=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=EF=BC=8C=E8=AE=BE=E7=BD=AE=E5=A5=BD=E4=BA=86=E5=AD=97=E4=BD=93?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E4=BB=A5=E5=8F=8A=E9=A2=9C=E8=89=B2=E3=80=82?= =?UTF-8?q?=E4=BD=86=E5=9F=BA=E6=9C=AC=E5=8A=9F=E8=83=BD=E4=BB=8D=E6=9C=AA?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=EF=BC=8C=E5=90=8E=E7=BB=AD=E4=BC=9A=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz_two/Calculator_two.java | 99 ++++++++++++++++++++-- 1 file changed, 93 insertions(+), 6 deletions(-) diff --git a/src/calculator_zjz_two/Calculator_two.java b/src/calculator_zjz_two/Calculator_two.java index e9d3dc8..f4baae8 100644 --- a/src/calculator_zjz_two/Calculator_two.java +++ b/src/calculator_zjz_two/Calculator_two.java @@ -13,25 +13,112 @@ import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; +//分别导入包,减少编译时间,提高运行效率 public class Calculator_two extends JFrame { - private String[] cen_btn = {"7","8","9","/","sqrt", + private String[] cen_name = {"7","8","9","/","sqrt", "4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="}; //计算器的主体按键 - private String[] west_btn = {"MC","MR","MS","M+"}; //计算器的左边的按键 - private String[] nor_btn = {"Back","CE","C"}; //计算器文本框下的按键 + private String[] west_name = {"MC","MR","MS","M+"}; //计算器的左边的按键 + private String[] nor_name = {"Back","CE","C"}; //计算器文本框下的按键 + + private JPanel cal_west = new JPanel(); //新建西面的面板 + private JPanel cal_center = new JPanel(); //新键中间的面板 + + private JTextField text = new JTextField("0",10); //声明了组件:文本框,用于输入文本(默认显示0) public Calculator_two() { //利用构造器进行操作 + this.init(); //调用方法对窗口进行初始化 + this.addText(); //调用方法添加文本框 + this.addWest(); //调用方法添加西面的控件 + this.addCenter(); //调用方法添加中间的控件 + + } + + /********************************************初始化***************************************/ + + public void init() { //将对窗口的初始化封装一个方法 + this.setTitle("张家中的计算器"); //命名一个窗口 this.setBounds(100,100,500,400); //设置窗口的大小(宽500,高400)及初始位置(距屏幕左边和上方均为100个像素点) + this.setLayout(new BorderLayout()); //设置窗体的布局为BorderLayout this.setResizable(false); //设置窗体不可调整大小 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击关闭时结束程序 - this.setVisible(true); //设置窗体是可见的 + this.text.setFont(new Font("粗体",Font.PLAIN,20)); //将输入到文本框的字体设置为粗体,字号20 + + } + + /****************************************添加文本框****************************************/ + + public void addText() { //将添加文本封装为一个方法 + + this.text.setPreferredSize(new Dimension(230,50)); //将文本框的宽度设置为230,高度设置为50 + this.add(text,BorderLayout.NORTH); //将文本框添加到窗体的北面 } - + + /*********************************添加西面的控件******************************************/ + + public void addWest() { + + cal_west.setLayout(new BorderLayout()); //西面的面板使用BorderLayout布局 + JPanel west_north = new JPanel(); //在西面的面板北面再嵌套一个子面板 + west_north.setLayout(new GridLayout()); //北面的子面板使用GridLayout布局 + JPanel west_center = new JPanel(); //在西面的面板的中间再嵌套一个子面板 + west_center.setLayout(new GridLayout(4,1,2,1)); //中间的子面板使用GridLayout布局(4行1列,横向间距2,纵向间距1) + JButton btn_empty = new JButton(" "); //空按钮 + btn_empty.setEnabled(false); //该空按钮不可以点击 + west_north.add(btn_empty); //将空按钮放在子面板west_north上面 + cal_west.add(west_north,BorderLayout.NORTH); //将west_north子面板放在cal_west的北面 + for(int i=0;i<4;i++) { + JButton west_btn = new JButton(); //西面的按钮 + west_btn.setText(west_name[i]); //利用for循环命名西面的按钮 + west_btn.setFont(new Font("粗体",Font.BOLD,20)); //MC,MR,MS,M+设置为粗体,字号20 + west_center.add(west_btn); //利用for循环将西面按钮添加到子面板west_center上 + } + cal_west.add(west_center,BorderLayout.CENTER); //将west_center子面板添加到cal_west的中间 + this.add(cal_west,BorderLayout.WEST); //将cal_west 西面的面板添加到窗体的西面 + + } + + /*********************************添加中间的控件*******************************************/ + + public void addCenter() { + + String regex = "\\p{Digit}"; //正则表达式,代表数字0-9 + + cal_center.setLayout(new BorderLayout()); //中间的面板使用BorderLayout布局 + JPanel center_nor = new JPanel(); //在中间的面板的北面嵌套一个子面板center_nor + center_nor.setLayout(new GridLayout(1,3,1,1)); //北面的子面板使用GridLayout布局(1行3列,横向间距1,纵向间距1) + JPanel center_cen = new JPanel(); //在中间的面板的中间嵌套一个子面板center_cen + center_cen.setLayout(new GridLayout(4,5,3,1)); //中间的子面板使用GridLayout布局(4行5列,横向间距3,纵向间距1) + for(int i=0;i<3;i++) { + JButton nor_btn = new JButton(); //中间面板的北面的按钮 + nor_btn.setText(nor_name[i]); //利用for循环命名中间的北面center_nor的按钮 + nor_btn.setFont(new Font("粗体",Font.BOLD,12)); //将Back CE C 字体设置为粗体,字号12 + nor_btn.setForeground(Color.BLUE); //将Back CE C 颜色设置为蓝色 + center_nor.add(nor_btn,BorderLayout.NORTH); //利用for循环将中间的北面的按钮添加到子面板center_nor上 + } + cal_center.add(center_nor,BorderLayout.NORTH); //将center_nor子面板添加到cal_center的北面 + for(int i=0;i<20;i++) { + JButton cen_btn = new JButton(); //中间面板的中间的按钮 + cen_btn.setText(cen_name[i]); //利用for循环命名中间的中间center_cen的按钮 + if(cen_name[i].matches(regex)) { //利用正则表达式进行判断 + cen_btn.setFont(new Font("粗体",Font.BOLD,20)); //将数字0-9就设置为粗体,字号20 + cen_btn.setForeground(Color.RED); //将数字0-9设置为红色 + } + else {cen_btn.setFont(new Font("粗体",Font.BOLD,20)); + cen_btn.setForeground(Color.GRAY);} //将/ = + - sqrt +/- . % * 1/x 设置为灰色 + center_cen.add(cen_btn,BorderLayout.CENTER); //利用for循环将中间的中间的按钮添加到子面板center_cen上 + } + cal_center.add(center_cen,BorderLayout.CENTER); //将center_cen子面板添加到cal_center的中间 + this.add(cal_center,BorderLayout.CENTER); //将cal_center 中间的面板添加到窗体的中间 + + } + public static void main(String[] args) { - new Calculator_two(); //new一个窗体 + Calculator_two calculator = new Calculator_two(); //new一个窗体 + calculator.setVisible(true); //设置窗体是可见的 } } \ No newline at end of file -- Gitee From a6d6f7bd9b1f151ae28ce5a4fea7aa07afbc51ba Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Wed, 1 Jun 2022 22:42:27 +0800 Subject: [PATCH 11/16] =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC=E7=9A=84?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84=E5=9F=BA=E6=9C=AC=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=B7=B2=E5=85=A8=E9=83=A8=E5=AE=9E=E7=8E=B0=EF=BC=8C?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=92=8C=E4=B8=8A=E4=B8=80=E4=BB=A3=E7=9B=B8?= =?UTF-8?q?=E6=AF=94=E6=9C=89=E6=89=80=E4=BC=98=E5=8C=96=EF=BC=8C=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E7=9B=AE=E5=89=8D=E6=AF=94=E4=B8=8A=E4=B8=80=E4=BB=A3?= =?UTF-8?q?=E5=A4=9A=E4=BA=86=E5=9B=9E=E6=A0=BC=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=90=8E=E7=BB=AD=E4=BC=9A=E8=BF=9B=E8=A1=8C=E6=9B=B4=E5=A4=9A?= =?UTF-8?q?=E7=9A=84=E4=BC=98=E5=8C=96=E4=BB=A5=E5=8F=8A=E5=87=8F=E5=B0=91?= =?UTF-8?q?=E4=B8=80=E4=BA=9Bbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz/Calculator.java | 16 +++---- src/calculator_zjz_two/Calculator_two.java | 55 ++++++++++++++++++++-- 2 files changed, 60 insertions(+), 11 deletions(-) diff --git a/src/calculator_zjz/Calculator.java b/src/calculator_zjz/Calculator.java index 09ee3ac..9c32dfa 100644 --- a/src/calculator_zjz/Calculator.java +++ b/src/calculator_zjz/Calculator.java @@ -53,7 +53,7 @@ public class Calculator extends JFrame implements ActionListener { public void addCenterButton() { //将添加中间组件的代码抽成一个方法 - String cen_btn_name = "123+456-789*0.=/"; //中间的按钮的名字,数字0-9,加减乘除以及小数点 + String cen_btn_name = "789+456-123*0.=/"; //中间的按钮的名字,数字0-9,加减乘除以及小数点 String regex = "[\\+\\-*/.=]"; //正则表达式,用于判断,优化代码 this.cal_center.setLayout(new GridLayout(4,4)); //使用GridLayout布局,4行4列,即4*4个组件 @@ -81,13 +81,6 @@ public class Calculator extends JFrame implements ActionListener { } - public static void main(String[] args) { - - Calculator cal_zjz = new Calculator(); //new一个窗体 - cal_zjz.setVisible(true); //设置窗体是可见的 - - } - private String firstNumber = null; //用于记录第一次输入的值 private String operator = null; //点击的运算符 @@ -120,4 +113,11 @@ public class Calculator extends JFrame implements ActionListener { } } + public static void main(String[] args) { + + Calculator cal_zjz = new Calculator(); //new一个窗体 + cal_zjz.setVisible(true); //设置窗体是可见的 + + } + } \ No newline at end of file diff --git a/src/calculator_zjz_two/Calculator_two.java b/src/calculator_zjz_two/Calculator_two.java index f4baae8..d514498 100644 --- a/src/calculator_zjz_two/Calculator_two.java +++ b/src/calculator_zjz_two/Calculator_two.java @@ -15,7 +15,7 @@ import javax.swing.JPanel; import javax.swing.JTextField; //分别导入包,减少编译时间,提高运行效率 -public class Calculator_two extends JFrame { +public class Calculator_two extends JFrame implements ActionListener{ private String[] cen_name = {"7","8","9","/","sqrt", "4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="}; //计算器的主体按键 @@ -25,7 +25,10 @@ public class Calculator_two extends JFrame { private JPanel cal_west = new JPanel(); //新建西面的面板 private JPanel cal_center = new JPanel(); //新键中间的面板 - private JTextField text = new JTextField("0",10); //声明了组件:文本框,用于输入文本(默认显示0) + private JTextField text = new JTextField(); //声明了组件:文本框,用于输入文本 + + private String firstNum = null; //用于记录第一次输入的值 + private String operator = null; //点击的运算符 public Calculator_two() { //利用构造器进行操作 @@ -75,6 +78,7 @@ public class Calculator_two extends JFrame { JButton west_btn = new JButton(); //西面的按钮 west_btn.setText(west_name[i]); //利用for循环命名西面的按钮 west_btn.setFont(new Font("粗体",Font.BOLD,20)); //MC,MR,MS,M+设置为粗体,字号20 + west_btn.addActionListener(this); //添加监听器 west_center.add(west_btn); //利用for循环将西面按钮添加到子面板west_center上 } cal_west.add(west_center,BorderLayout.CENTER); //将west_center子面板添加到cal_west的中间 @@ -98,6 +102,7 @@ public class Calculator_two extends JFrame { nor_btn.setText(nor_name[i]); //利用for循环命名中间的北面center_nor的按钮 nor_btn.setFont(new Font("粗体",Font.BOLD,12)); //将Back CE C 字体设置为粗体,字号12 nor_btn.setForeground(Color.BLUE); //将Back CE C 颜色设置为蓝色 + nor_btn.addActionListener(this); //添加监听器 center_nor.add(nor_btn,BorderLayout.NORTH); //利用for循环将中间的北面的按钮添加到子面板center_nor上 } cal_center.add(center_nor,BorderLayout.NORTH); //将center_nor子面板添加到cal_center的北面 @@ -108,8 +113,9 @@ public class Calculator_two extends JFrame { cen_btn.setFont(new Font("粗体",Font.BOLD,20)); //将数字0-9就设置为粗体,字号20 cen_btn.setForeground(Color.RED); //将数字0-9设置为红色 } - else {cen_btn.setFont(new Font("粗体",Font.BOLD,20)); + else {cen_btn.setFont(new Font("粗体",Font.BOLD,20)); //将/ = + - sqrt +/- . % * 1/x 设置为粗体,字号20 cen_btn.setForeground(Color.GRAY);} //将/ = + - sqrt +/- . % * 1/x 设置为灰色 + cen_btn.addActionListener(this); //添加监听器 center_cen.add(cen_btn,BorderLayout.CENTER); //利用for循环将中间的中间的按钮添加到子面板center_cen上 } cal_center.add(center_cen,BorderLayout.CENTER); //将center_cen子面板添加到cal_center的中间 @@ -117,8 +123,51 @@ public class Calculator_two extends JFrame { } + public void actionPerformed(ActionEvent e) { //重新actionPerformed方法 + + String click_btn = e.getActionCommand(); //获取按钮上的值 + if("1234567890.".indexOf(click_btn)!=-1) { + this.text.setText(text.getText()+click_btn); //假如点击的按钮是(0123456789 .),就在文本框显示出来 + this.text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 + } + else if(click_btn.matches("[\\+\\-*/]{1}")) { //点击+-*/ + operator = click_btn; //保存输入的符号 + firstNum = this.text.getText(); //从文本框中获取输入的值 + this.text.setText(""); //将文本框清空,以便输入第二个值 + } + else if(click_btn.equals("C")) { //点击C按钮 + this.text.setText(""); //清空文本框 + } + else if(click_btn.equals("Back")) { //点击Back按钮 + String temp = text.getText(); //获取文本框输入的值 + int i = temp.length(); //获取文本框输入的值的长度 + if(i>0) { + temp = temp.substring(0,i-1); //退格,去掉最后一个字符 + this.text.setText(temp); //显示新的文本 + } + } + else if(click_btn.equals("=")) { + Double a = Double.valueOf(firstNum); //记录点击运算符之前输入的数字(并将String型转换为double型) + Double b = Double.valueOf(this.text.getText()); //记录从文本框获取点击运算符之后输入的值 + Double result = null; //用于记录运算结果 + switch(operator) { + case "+": result = a + b; break; //点击+号就执行加运算 + case "-": result = a - b; break; //点击-号就执行减运算 + case "*": result = a * b; break; //点击*号就执行乘运算 + case "/": + if(b != 0) { + result = a / b; //点击/号,且分母不为0就执行除运算 + } + break; + } + this.text.setText(result.toString()); //将运算结果显示在文本框中 + } + + } + public static void main(String[] args) { Calculator_two calculator = new Calculator_two(); //new一个窗体 calculator.setVisible(true); //设置窗体是可见的 } + } \ No newline at end of file -- Gitee From 3cda23b453a1e8fe32af827707d91d5c59fa1623 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Fri, 3 Jun 2022 00:28:10 +0800 Subject: [PATCH 12/16] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=BC=80?= =?UTF-8?q?=E6=96=B9=EF=BC=8C=E5=8F=96=E5=80=92=E6=95=B0=EF=BC=8C=E7=99=BE?= =?UTF-8?q?=E5=88=86=E6=95=B0=E8=BF=90=E7=AE=97=EF=BC=8C=E6=AD=A3=E8=B4=9F?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E8=BD=AC=E5=8C=96=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=B9=B6=E6=9C=89=E4=BA=86=E4=B8=80=E5=AE=9A=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=94=99=E8=AF=AF=E7=9A=84=E8=83=BD=E5=8A=9B=EF=BC=8C?= =?UTF-8?q?=E7=9B=AE=E5=89=8D=E5=B7=B2=E5=88=9D=E6=AD=A5=E5=85=B7=E5=A4=87?= =?UTF-8?q?=E6=A0=87=E5=87=86=E5=9E=8B=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E3=80=82=E5=B0=86=E5=A4=84=E7=90=86=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E9=80=BB=E8=BE=91=E7=9A=84=E4=BB=A3=E7=A0=81=E5=B0=81?= =?UTF-8?q?=E8=A3=85=E6=88=90=E4=BA=86=E6=96=B9=E6=B3=95=EF=BC=8C=E4=BE=BF?= =?UTF-8?q?=E4=BA=8E=E5=90=8E=E6=9C=9F=E7=BB=B4=E6=8A=A4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz_two/Calculator_two.java | 125 ++++++++++++++++----- 1 file changed, 95 insertions(+), 30 deletions(-) diff --git a/src/calculator_zjz_two/Calculator_two.java b/src/calculator_zjz_two/Calculator_two.java index d514498..ebed1be 100644 --- a/src/calculator_zjz_two/Calculator_two.java +++ b/src/calculator_zjz_two/Calculator_two.java @@ -6,9 +6,7 @@ import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.Arrays; - +import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; @@ -123,48 +121,115 @@ public class Calculator_two extends JFrame implements ActionListener{ } + /***************************************基本功能的实现***********************************/ + public void actionPerformed(ActionEvent e) { //重新actionPerformed方法 String click_btn = e.getActionCommand(); //获取按钮上的值 - if("1234567890.".indexOf(click_btn)!=-1) { - this.text.setText(text.getText()+click_btn); //假如点击的按钮是(0123456789 .),就在文本框显示出来 - this.text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 + + if("1234567890.".indexOf(click_btn)>=0) { //如果点击了数字或者小数点按钮 + handleNumber(click_btn); //将处理数字和小数点的代码封装成方法 + } + else if(click_btn.equals(nor_name[2])) { //如果点击了C清零 + this.text.setText(""); //将文本框清空 + } + else if(click_btn.equals(nor_name[1])) { //如果点击了CE清除当前文本 + this.text.setText(""); //将文本框清空 + } + else if(click_btn.equals(nor_name[0])) { //如果点击了Back按钮 + handleBack(); //将处理Back的代码封装成方法 } else if(click_btn.matches("[\\+\\-*/]{1}")) { //点击+-*/ operator = click_btn; //保存输入的符号 firstNum = this.text.getText(); //从文本框中获取输入的值 this.text.setText(""); //将文本框清空,以便输入第二个值 } - else if(click_btn.equals("C")) { //点击C按钮 - this.text.setText(""); //清空文本框 + else if(click_btn.equals("%")||click_btn.equals("sqrt")|| + click_btn.equals("1/x")||click_btn.equals("+/-")) { //点击 % +/- sqrt 1/x + operator = click_btn; //保存输入的符号 + firstNum = this.text.getText(); //从文本框中获取输入的值 + handleFun(); } - else if(click_btn.equals("Back")) { //点击Back按钮 - String temp = text.getText(); //获取文本框输入的值 - int i = temp.length(); //获取文本框输入的值的长度 - if(i>0) { - temp = temp.substring(0,i-1); //退格,去掉最后一个字符 - this.text.setText(temp); //显示新的文本 - } + else if(click_btn.equals("=")) { //点击 = + handleOperator(); //将执行计算的代码封装成方法 + } + } + + /**************************处理数字和小数点的方法************************/ + + private void handleNumber(String temp) { + + + if(temp.equals("1234567890")) { //如果点击的是数字 + this.text.setText(temp); //就显示在文本框 + this.text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 + }else if((temp.equals("."))&&text.getText().indexOf(".")<0) { //如果点击了小数点并且之前没有小数点 + this.text.setText(text.getText()+"."); //就将小数点添加到后面 + this.text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 + }else if(!temp.equals(".")) { //如果点击的不是小数 + this.text.setText(text.getText()+temp); //将数字添加到后面 + this.text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 } - else if(click_btn.equals("=")) { - Double a = Double.valueOf(firstNum); //记录点击运算符之前输入的数字(并将String型转换为double型) - Double b = Double.valueOf(this.text.getText()); //记录从文本框获取点击运算符之后输入的值 - Double result = null; //用于记录运算结果 - switch(operator) { - case "+": result = a + b; break; //点击+号就执行加运算 - case "-": result = a - b; break; //点击-号就执行减运算 - case "*": result = a * b; break; //点击*号就执行乘运算 - case "/": - if(b != 0) { - result = a / b; //点击/号,且分母不为0就执行除运算 - } - break; + + } + + /************************处理Back的方法********************************/ + + private void handleBack() { + + String temp = text.getText(); //获取当前文本框的内容 + int i = temp.length(); //获取当前文本框的内容的长度 + if(i>0) { + temp = temp.substring(0,i-1); //退格,去掉文本框的最后一个字符 + text.setText(temp); //显示新的文本到文本框上 + } + } + + /***********************处理运算符(+-/*)的方法*******************/ + + private void handleOperator() { + + Double a = Double.valueOf(firstNum); //记录点击运算符之前输入的数字(并将String型转换为double型) + Double b = Double.valueOf(this.text.getText()); //记录从文本框获取点击运算符之后输入的值 + Double result = null; //用于记录运算结果 + switch(operator) { + case "+": result = a + b; break; //点击+号就执行加运算 + case "-": result = a - b; break; //点击-号就执行减运算 + case "*": result = a * b; break; //点击*号就执行乘运算 + case "/": + if(b == 0) { + this.text.setText("除数不能为0"); //如果分母为0,就提示 + }else { + result = a/b; //分母不为0,执行除运算 } - this.text.setText(result.toString()); //将运算结果显示在文本框中 + break; } - + this.text.setText(result.toString()); //将运算结果显示在文本框中 + } + /***********************处理功能键(sqrt 1/x +/- %)的方法*****************/ + + private void handleFun() { + + Double result = Double.valueOf(firstNum);; //记录点击功能键之前输入的数字(并将String型转换为double型) + switch(operator) { + case "1/x" : if(result==0) { //点击1/x + this.text.setText("0没有倒数"); //如果当前输入的是0,就提示 + }else { + result = 1/result; //返回当前数值的倒数 + } + break; + case "sqrt" : result = Math.sqrt(result);break; //点击sqrt,就开方 + case "%" : result = result/100;break; //点击%,就除以100 + case "+/-" : result = result*(-1);break; //点击+/-,就将正数变为负数或者将负数变为正数 + } + this.text.setText(result.toString()); //将运算结果显示在文本框中 + + } + + /****************主方法*****************************************/ + public static void main(String[] args) { Calculator_two calculator = new Calculator_two(); //new一个窗体 calculator.setVisible(true); //设置窗体是可见的 -- Gitee From b06289bfc5eed529cb7d971891cf8987b60d9624 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Sat, 4 Jun 2022 00:39:59 +0800 Subject: [PATCH 13/16] =?UTF-8?q?=E6=96=B0=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=A0=8F=EF=BC=8C=E6=B7=BB=E5=8A=A0=E4=BA=86?= =?UTF-8?q?=E6=B1=82=E5=B9=B3=E6=96=B9=EF=BC=8C=E7=AB=8B=E6=96=B9,sin,cos?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz_two/Calculator_two.java | 48 +++++++++++++++++----- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/src/calculator_zjz_two/Calculator_two.java b/src/calculator_zjz_two/Calculator_two.java index ebed1be..ffc2ed7 100644 --- a/src/calculator_zjz_two/Calculator_two.java +++ b/src/calculator_zjz_two/Calculator_two.java @@ -8,17 +8,22 @@ import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; -import javax.swing.JFrame; +import javax.swing.JFrame; +import javax.swing.JMenu; import javax.swing.JPanel; import javax.swing.JTextField; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; //分别导入包,减少编译时间,提高运行效率 public class Calculator_two extends JFrame implements ActionListener{ private String[] cen_name = {"7","8","9","/","sqrt", "4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="}; //计算器的主体按键 - private String[] west_name = {"MC","MR","MS","M+"}; //计算器的左边的按键 + private String[] west_name = {"sin","cos","x^2","x^3"}; //计算器的左边的按键 private String[] nor_name = {"Back","CE","C"}; //计算器文本框下的按键 + + private JMenuBar top_menubar = new JMenuBar(); //新建菜单条 private JPanel cal_west = new JPanel(); //新建西面的面板 private JPanel cal_center = new JPanel(); //新键中间的面板 @@ -31,6 +36,7 @@ public class Calculator_two extends JFrame implements ActionListener{ public Calculator_two() { //利用构造器进行操作 this.init(); //调用方法对窗口进行初始化 + this.addMenubar(); //调用方法添加菜单 this.addText(); //调用方法添加文本框 this.addWest(); //调用方法添加西面的控件 this.addCenter(); //调用方法添加中间的控件 @@ -41,7 +47,7 @@ public class Calculator_two extends JFrame implements ActionListener{ public void init() { //将对窗口的初始化封装一个方法 - this.setTitle("张家中的计算器"); //命名一个窗口 + this.setTitle("张家中330的计算器"); //命名一个窗口 this.setBounds(100,100,500,400); //设置窗口的大小(宽500,高400)及初始位置(距屏幕左边和上方均为100个像素点) this.setLayout(new BorderLayout()); //设置窗体的布局为BorderLayout this.setResizable(false); //设置窗体不可调整大小 @@ -59,6 +65,24 @@ public class Calculator_two extends JFrame implements ActionListener{ } + /**********************************添加菜单栏********************************/ + + public void addMenubar() { + + JMenu menu1 = new JMenu("编辑"); //创建和设置菜单名 + JMenu menu2 = new JMenu("查看"); + JMenu menu3 = new JMenu("帮助"); + JMenuItem standard = new JMenuItem("标准型"); //创建菜单项 + JMenuItem science = new JMenuItem("科学型"); + menu2.add(standard); //将菜单项添加到"查看"菜单上 + menu2.add(science); + top_menubar.add(menu1); //将菜单添加到菜单条中 + top_menubar.add(menu2); + top_menubar.add(menu3); + this.setJMenuBar(top_menubar); //将菜单条添加到窗口 + + } + /*********************************添加西面的控件******************************************/ public void addWest() { @@ -144,15 +168,15 @@ public class Calculator_two extends JFrame implements ActionListener{ firstNum = this.text.getText(); //从文本框中获取输入的值 this.text.setText(""); //将文本框清空,以便输入第二个值 } - else if(click_btn.equals("%")||click_btn.equals("sqrt")|| - click_btn.equals("1/x")||click_btn.equals("+/-")) { //点击 % +/- sqrt 1/x + else if(click_btn.equals("=")) { //点击 = + handleOperator(); //将执行计算的代码封装成方法 + } + else { //点击功能键 operator = click_btn; //保存输入的符号 firstNum = this.text.getText(); //从文本框中获取输入的值 handleFun(); } - else if(click_btn.equals("=")) { //点击 = - handleOperator(); //将执行计算的代码封装成方法 - } + } /**************************处理数字和小数点的方法************************/ @@ -194,7 +218,7 @@ public class Calculator_two extends JFrame implements ActionListener{ Double result = null; //用于记录运算结果 switch(operator) { case "+": result = a + b; break; //点击+号就执行加运算 - case "-": result = a - b; break; //点击-号就执行减运算 + case "-": result = a - b;break; //点击-号就执行减运算 case "*": result = a * b; break; //点击*号就执行乘运算 case "/": if(b == 0) { @@ -208,7 +232,7 @@ public class Calculator_two extends JFrame implements ActionListener{ } - /***********************处理功能键(sqrt 1/x +/- %)的方法*****************/ + /***********************处理功能键(sqrt 1/x +/- % sin cos x^2 |x|)的方法*****************/ private void handleFun() { @@ -223,6 +247,10 @@ public class Calculator_two extends JFrame implements ActionListener{ case "sqrt" : result = Math.sqrt(result);break; //点击sqrt,就开方 case "%" : result = result/100;break; //点击%,就除以100 case "+/-" : result = result*(-1);break; //点击+/-,就将正数变为负数或者将负数变为正数 + case "sin" :result = Math.sin(result);break; //点击sin,就返回当前数的sin值 + case "cos" :result = Math.cos(result);break; //点击sin,就返回当前数的cos值 + case "x^2" :result = Math.pow(result, 2);break; //点击x^2,就返回当前数的平方 + case "x^3":result = Math.pow(result,3);break; //点击x^3,就返回当前数的立方 } this.text.setText(result.toString()); //将运算结果显示在文本框中 -- Gitee From f24b71aaede9b64bd88cfd99d2968470bfb9f567 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Wed, 8 Jun 2022 23:29:43 +0800 Subject: [PATCH 14/16] =?UTF-8?q?=E7=BB=99=E8=8F=9C=E5=8D=95=E6=A0=8F?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E7=9B=91=E8=A7=86=E5=99=A8=EF=BC=8C?= =?UTF-8?q?=E4=BD=BF=E4=B9=8B=E8=83=BD=E5=A4=9F=E5=AE=9E=E7=8E=B0=E6=A0=87?= =?UTF-8?q?=E5=87=86=E5=9E=8B=E8=AE=A1=E7=AE=97=E5=99=A8=E5=92=8C=E7=A7=91?= =?UTF-8?q?=E5=AD=A6=E5=9E=8B=E8=AE=A1=E7=AE=97=E5=99=A8=E4=B9=8B=E9=97=B4?= =?UTF-8?q?=E7=9A=84=E8=BD=AC=E6=8D=A2=E3=80=82=E6=96=B0=E5=BB=BA=E4=BA=86?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E7=B1=BB=EF=BC=8C=E4=B8=BA=E7=A7=91=E5=AD=A6?= =?UTF-8?q?=E5=9E=8B=E8=AE=A1=E7=AE=97=E5=99=A8=E6=89=80=E5=9C=A8=E7=9A=84?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=EF=BC=8C=E7=A7=91=E5=AD=A6=E8=AE=A1=E7=AE=97?= =?UTF-8?q?=E5=99=A8=E6=96=B0=E6=B7=BB=E5=8A=A0=E4=BA=86=E7=AE=97ln,lg,?= =?UTF-8?q?=E7=AB=8B=E6=96=B9,10=E7=9A=84x=E6=AC=A1=E6=96=B9,tan,=E9=98=B6?= =?UTF-8?q?=E4=B9=98,e=E7=9A=84x=E6=AC=A1=E6=96=B9,x=E7=9A=84x=E6=AC=A1?= =?UTF-8?q?=E6=96=B9=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=B9=9F=E6=9C=89?= =?UTF-8?q?=E4=B8=80=E5=AE=9A=E7=9A=84=E5=A4=84=E7=90=86=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E8=83=BD=E5=8A=9B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz_two/Calculator_two.java | 55 ++++++++++++---------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/src/calculator_zjz_two/Calculator_two.java b/src/calculator_zjz_two/Calculator_two.java index ffc2ed7..01ce2c4 100644 --- a/src/calculator_zjz_two/Calculator_two.java +++ b/src/calculator_zjz_two/Calculator_two.java @@ -4,10 +4,11 @@ import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; -import java.awt.GridLayout; +import java.awt.GridLayout; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import javax.swing.JButton; +import java.awt.event.ActionListener; + +import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JPanel; @@ -20,7 +21,7 @@ public class Calculator_two extends JFrame implements ActionListener{ private String[] cen_name = {"7","8","9","/","sqrt", "4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="}; //计算器的主体按键 - private String[] west_name = {"sin","cos","x^2","x^3"}; //计算器的左边的按键 + private String[] west_name = {"sin","cos","x^2","|x|"}; //计算器的左边的按键 private String[] nor_name = {"Back","CE","C"}; //计算器文本框下的按键 private JMenuBar top_menubar = new JMenuBar(); //新建菜单条 @@ -47,7 +48,7 @@ public class Calculator_two extends JFrame implements ActionListener{ public void init() { //将对窗口的初始化封装一个方法 - this.setTitle("张家中330的计算器"); //命名一个窗口 + this.setTitle("张家中330的标准计算器"); //命名一个窗口 this.setBounds(100,100,500,400); //设置窗口的大小(宽500,高400)及初始位置(距屏幕左边和上方均为100个像素点) this.setLayout(new BorderLayout()); //设置窗体的布局为BorderLayout this.setResizable(false); //设置窗体不可调整大小 @@ -69,16 +70,19 @@ public class Calculator_two extends JFrame implements ActionListener{ public void addMenubar() { - JMenu menu1 = new JMenu("编辑"); //创建和设置菜单名 - JMenu menu2 = new JMenu("查看"); - JMenu menu3 = new JMenu("帮助"); + JMenu menu = new JMenu("模式"); //创建和设置菜单名 JMenuItem standard = new JMenuItem("标准型"); //创建菜单项 JMenuItem science = new JMenuItem("科学型"); - menu2.add(standard); //将菜单项添加到"查看"菜单上 - menu2.add(science); - top_menubar.add(menu1); //将菜单添加到菜单条中 - top_menubar.add(menu2); - top_menubar.add(menu3); + menu.add(standard); //将菜单项添加到"查看"菜单上 + menu.add(science); + top_menubar.add(menu); //将菜单添加到菜单条中 + science.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent a) { + Science kexue = new Science(); + kexue.setVisible(true); + } + }); + this.setJMenuBar(top_menubar); //将菜单条添加到窗口 } @@ -148,35 +152,34 @@ public class Calculator_two extends JFrame implements ActionListener{ /***************************************基本功能的实现***********************************/ public void actionPerformed(ActionEvent e) { //重新actionPerformed方法 + + String click = e.getActionCommand(); //获取按钮上的值 - String click_btn = e.getActionCommand(); //获取按钮上的值 - - if("1234567890.".indexOf(click_btn)>=0) { //如果点击了数字或者小数点按钮 - handleNumber(click_btn); //将处理数字和小数点的代码封装成方法 + if("1234567890.".indexOf(click)>=0) { //如果点击了数字或者小数点按钮 + handleNumber(click); //将处理数字和小数点的代码封装成方法 } - else if(click_btn.equals(nor_name[2])) { //如果点击了C清零 + else if(click.equals(nor_name[2])) { //如果点击了C清零 this.text.setText(""); //将文本框清空 } - else if(click_btn.equals(nor_name[1])) { //如果点击了CE清除当前文本 + else if(click.equals(nor_name[1])) { //如果点击了CE清除当前文本 this.text.setText(""); //将文本框清空 } - else if(click_btn.equals(nor_name[0])) { //如果点击了Back按钮 + else if(click.equals(nor_name[0])) { //如果点击了Back按钮 handleBack(); //将处理Back的代码封装成方法 } - else if(click_btn.matches("[\\+\\-*/]{1}")) { //点击+-*/ - operator = click_btn; //保存输入的符号 + else if(click.matches("[\\+\\-*/]{1}")) { //点击+-*/ + operator = click; //保存输入的符号 firstNum = this.text.getText(); //从文本框中获取输入的值 this.text.setText(""); //将文本框清空,以便输入第二个值 } - else if(click_btn.equals("=")) { //点击 = + else if(click.equals("=")) { //点击 = handleOperator(); //将执行计算的代码封装成方法 } else { //点击功能键 - operator = click_btn; //保存输入的符号 + operator = click; //保存输入的符号 firstNum = this.text.getText(); //从文本框中获取输入的值 handleFun(); } - } /**************************处理数字和小数点的方法************************/ @@ -250,7 +253,7 @@ public class Calculator_two extends JFrame implements ActionListener{ case "sin" :result = Math.sin(result);break; //点击sin,就返回当前数的sin值 case "cos" :result = Math.cos(result);break; //点击sin,就返回当前数的cos值 case "x^2" :result = Math.pow(result, 2);break; //点击x^2,就返回当前数的平方 - case "x^3":result = Math.pow(result,3);break; //点击x^3,就返回当前数的立方 + case "|x|":if(result<0)result=-result;break; //点击|x|,就返回当前数的绝对值 } this.text.setText(result.toString()); //将运算结果显示在文本框中 -- Gitee From f3c6f231cc6ad2964ede3f8aaf826c8e8e9458f1 Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Wed, 8 Jun 2022 23:32:20 +0800 Subject: [PATCH 15/16] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E7=B1=BB=EF=BC=8C=E5=B0=81=E8=A3=85=E4=BA=86=E7=A7=91?= =?UTF-8?q?=E5=AD=A6=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz_two/Dis_Btu.java | 6 - src/calculator_zjz_two/Math_.java | 7 - src/calculator_zjz_two/Science.java | 286 ++++++++++++++++++++++++++++ 3 files changed, 286 insertions(+), 13 deletions(-) delete mode 100644 src/calculator_zjz_two/Dis_Btu.java delete mode 100644 src/calculator_zjz_two/Math_.java create mode 100644 src/calculator_zjz_two/Science.java diff --git a/src/calculator_zjz_two/Dis_Btu.java b/src/calculator_zjz_two/Dis_Btu.java deleted file mode 100644 index c113a75..0000000 --- a/src/calculator_zjz_two/Dis_Btu.java +++ /dev/null @@ -1,6 +0,0 @@ -package calculator_zjz_two; -//新建一个类,用于处理按钮的监听事件 - -public class Dis_Btu { - -} diff --git a/src/calculator_zjz_two/Math_.java b/src/calculator_zjz_two/Math_.java deleted file mode 100644 index d6f49bd..0000000 --- a/src/calculator_zjz_two/Math_.java +++ /dev/null @@ -1,7 +0,0 @@ -package calculator_zjz_two; -//新建一个类,实现加减乘除,为提高精度和范围,数据格式都使用BigDecimal对象进行计算 -import java.math.BigDecimal; - -public class Math_ { - -} diff --git a/src/calculator_zjz_two/Science.java b/src/calculator_zjz_two/Science.java new file mode 100644 index 0000000..cf3794a --- /dev/null +++ b/src/calculator_zjz_two/Science.java @@ -0,0 +1,286 @@ +package calculator_zjz_two; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.EventQueue; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +//分别导入包,减少编译时间,提高运行效率 + +public class Science extends JFrame implements ActionListener { + + private String[] cen_name = {"x^2","x^3","x^x","sqrt","10^x","x!", + "ln","lg","%","sin","cos","tan","PI","e","e^x"}; //计算器的主体按键 + private String[] west_name = {"Back","C","*","/","7","8","9","+","4","" + + "5","6","-","1","2","3","|x|","0",".","=","1/x"}; //计算器的左边的按键 + + private JMenuBar top_menubar = new JMenuBar(); //新建菜单条 + + private JPanel cal_west = new JPanel(); //新建西面的面板 + private JPanel cal_center = new JPanel(); //新键中间的面板 + + private JTextField text = new JTextField(); //声明了组件:文本框,用于输入文本 + + private String firstNum = null; //用于记录第一次输入的值 + private String operator = null; //点击的运算符 + + public Science() { //利用构造器进行操作 + + this.init(); //调用方法对窗口进行初始化 + this.addMenubar(); //调用方法添加菜单 + this.addText(); //调用方法添加文本框 + this.addWest(); //调用方法添加西面的控件 + this.addCenter(); //调用方法添加中间的控件 + + } + + /********************************************初始化***************************************/ + + public void init() { //将对窗口的初始化封装一个方法 + + this.setTitle("张家中330的科学计算器"); //命名一个窗口 + this.setBounds(100,100,550,400); //设置窗口的大小(宽500,高400)及初始位置(距屏幕左边和上方均为100个像素点) + this.setLayout(new BorderLayout()); //设置窗体的布局为BorderLayout + this.setResizable(false); //设置窗体不可调整大小 + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击关闭时隐藏窗口 + this.text.setFont(new Font("粗体",Font.PLAIN,20)); //将输入到文本框的字体设置为粗体,字号20 + + } + + /****************************************添加文本框****************************************/ + + public void addText() { //将添加文本封装为一个方法 + + this.text.setPreferredSize(new Dimension(230,50)); //将文本框的宽度设置为230,高度设置为50 + this.add(text,BorderLayout.NORTH); //将文本框添加到窗体的北面 + + } + + /**********************************添加菜单栏********************************/ + + public void addMenubar() { + + JMenu menu = new JMenu("模式"); //创建和设置菜单名 + JMenuItem standard = new JMenuItem("标准型"); //创建菜单项 + JMenuItem science = new JMenuItem("科学型"); + menu.add(standard); //将菜单项添加到"查看"菜单上 + menu.add(science); + top_menubar.add(menu); //将菜单添加到菜单条中 + standard.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent a) { + Calculator_two ordinary = new Calculator_two(); + ordinary.setVisible(true); + } + }); + + this.setJMenuBar(top_menubar); //将菜单条添加到窗口 + + } + + /*********************************添加西面的控件******************************************/ + + public void addWest() { + + String regex = "\\p{Digit}"; //正则表达式,代表数字0-9 + + + cal_west.setLayout(new GridLayout(5,4,2,1)); //西面的面板使用GridLayout布局 + for(int i=0;i<20;i++) { + JButton west_btn = new JButton(); //西面的按钮 + west_btn.setText(west_name[i]); //利用for循环命名西面的按钮 + west_btn.setFont(new Font("宋体",Font.BOLD,20)); //将字体设置为宋体 + if(west_name[i].matches(regex)) { //利用正则表达式进行判断 + west_btn.setFont(new Font("粗体",Font.BOLD,20)); //将数字0-9就设置为粗体,字号20 + west_btn.setForeground(Color.RED); //将数字0-9设置为红色 + } + west_btn.addActionListener(this); //添加监听器 + cal_west.add(west_btn); + } + this.add(cal_west,BorderLayout.WEST); //将cal_west 西面的面板添加到窗体的西面 + + + } + + /*********************************添加中间的控件*******************************************/ + + public void addCenter() { + + + cal_center.setLayout(new GridLayout(5,3,2,1)); //中间的面板使用GridLayout布局 + + for(int i=0;i<15;i++) { + JButton cen_btn = new JButton(); //中间面板的中间的按钮 + cen_btn.setText(cen_name[i]); //利用for循环命名中间的中间center_cen的按钮 + cen_btn.setFont(new Font("宋体",Font.BOLD,15)); + cen_btn.setForeground(Color.BLUE); //按钮为蓝色 + cen_btn.addActionListener(this); //添加监听器 + cal_center.add(cen_btn); + } + this.add(cal_center,BorderLayout.EAST); //将cal_center 中间的面板添加到窗体的 + + } + + /***************************************基本功能的实现***********************************/ + + public void actionPerformed(ActionEvent e) { //重新actionPerformed方法 + + String click = e.getActionCommand(); //获取按钮上的值 + + if("1234567890.".indexOf(click)>=0) { //如果点击了数字或者小数点按钮 + handleNumber(click); //将处理数字和小数点的代码封装成方法 + } + else if(click.matches("[\\+\\-*/]{1}")) { //点击+-*/ + operator = click; //保存输入的符号 + firstNum = this.text.getText(); //从文本框中获取输入的值 + this.text.setText(""); //将文本框清空,以便输入第二个值 + } + else if(click.equals("=")) { //点击 = + handleOperator(); //将执行计算的代码封装成方法 + }else if(click.equals("C")) { //如果点击了C清零 + this.text.setText(""); //将文本框清空 + } + else if(click.equals("Back")) { + handleBack(); + } + else if(click.equals("e")) { + this.text.setText("3.1415926"); + this.text.setHorizontalAlignment(JTextField.RIGHT); //点击e 就显示自然对数 + } + else if(click.equals("PI")) { + this.text.setText("2.17828"); + this.text.setHorizontalAlignment(JTextField.RIGHT); //点击PI就显示圆周率的一部分 + } + else { //点击功能键 + operator = click; //保存输入的符号 + firstNum = this.text.getText(); //从文本框中获取输入的值 + handleFun(); + } + } + + /**************************处理数字和小数点的方法************************/ + + private void handleNumber(String temp) { + + + if(temp.equals("1234567890")) { //如果点击的是数字 + this.text.setText(temp); //就显示在文本框 + this.text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 + }else if((temp.equals("."))&&text.getText().indexOf(".")<0) { //如果点击了小数点并且之前没有小数点 + this.text.setText(text.getText()+"."); //就将小数点添加到后面 + this.text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 + }else if(!temp.equals(".")) { //如果点击的不是小数 + this.text.setText(text.getText()+temp); //将数字添加到后面 + this.text.setHorizontalAlignment(JTextField.RIGHT); //让字体靠右显示 + } + + } + + /************************处理Back的方法********************************/ + + private void handleBack() { + + String temp = text.getText(); //获取当前文本框的内容 + int i = temp.length(); //获取当前文本框的内容的长度 + if(i>0) { + temp = temp.substring(0,i-1); //退格,去掉文本框的最后一个字符 + text.setText(temp); //显示新的文本到文本框上 + } + } + + /***********************处理运算符(+-/*)的方法*******************/ + + private void handleOperator() { + + Double a = Double.valueOf(firstNum); //记录点击运算符之前输入的数字(并将String型转换为double型) + Double b = Double.valueOf(this.text.getText()); //记录从文本框获取点击运算符之后输入的值 + Double result = null; //用于记录运算结果 + switch(operator) { + case "+": result = a + b; break; //点击+号就执行加运算 + case "-": result = a - b;break; //点击-号就执行减运算 + case "*": result = a * b; break; //点击*号就执行乘运算 + case "/": + if(b == 0) { + this.text.setText("除数不能为0"); //如果分母为0,就提示 + }else { + result = a/b; //分母不为0,执行除运算 + } + break; + } + this.text.setText(result.toString()); //将运算结果显示在文本框中 + + } + + /***********************处理功能键(sqrt 1/x +/- % sin cos x^2 |x|)的方法*****************/ + + private void handleFun() { + + Double result = Double.valueOf(firstNum);; //记录点击功能键之前输入的数字(并将String型转换为double型) + switch(operator) { + case "1/x" : if(result==0) { //点击1/x + this.text.setText("0没有倒数"); //如果当前输入的是0,就提示 + }else { + result = 1/result; //返回当前数值的倒数 + } + break; + case "sqrt" : result = Math.sqrt(result);break; //点击sqrt,就开方 + case "%" : result = result/100;break; //点击%,就除以100 + case "+/-" : result = result*(-1);break; //点击+/-,就将正数变为负数或者将负数变为正数 + case "sin" :result = Math.sin(result);break; //点击sin,就返回当前数的sin值 + case "cos" :result = Math.cos(result);break; //点击sin,就返回当前数的cos值 + case "tan": result = Math.tan(result);break; //计算tan值 + case "x^2" :result = Math.pow(result, 2);break; //点击x^2,就返回当前数的平方 + case "x^3": result = Math.pow(result, 3);break; //计算立方 + case "|x|": result = Math.abs(result);break; //点击|x|,就返回当前数的绝对值 + case "ln": result = Math.log(result);break; //计算lnX + case "lg": result = Math.log10(result);break; //计算lgX + case "e^x": result = Math.exp(result);break; //计算e的x次方 + case "x!": result = multi(result);break; //计算x的阶乘,调用multi(double n)方法 + case "x^x": result = Math.pow(result, getNumFromText());break; //计算x的x次方,调用getNumFromText()方法 + case "10^x": result = Math.pow(10, result);break; //计算10的x次方 + } + this.text.setText(result.toString()); //将运算结果显示在文本框中 + + } + + private double multi(double n) { + if(n==1) { + return 1; + } + return n*multi(n-1); //利用递归计算阶乘 + } + + private double getNumFromText() { //写一个方法计算x的x次方 + double resultNum = 0; + try { + resultNum = Double.valueOf(text.getText()).doubleValue(); + }catch(NumberFormatException e) {} + return resultNum; + } + + /****************主方法*****************************************/ + + public static void main(String[] args) { + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + Science app = new Science(); + app.setVisible(true); + }catch(Exception e) { + e.printStackTrace(); + } + } + }); //处理错误 +} + +} \ No newline at end of file -- Gitee From d50b0976f8b86c15d57829aa6e467b42a577202c Mon Sep 17 00:00:00 2001 From: zhangjiazhong <1875098314@qq.com> Date: Wed, 8 Jun 2022 23:53:54 +0800 Subject: [PATCH 16/16] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E4=BA=86=E4=B8=80=E4=BA=9B=E6=A0=87=E8=AF=86=E7=AC=A6=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=A3=E7=A0=81=E7=9A=84=E5=8F=AF=E8=AF=BB?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/calculator_zjz_two/Calculator_two.java | 2 +- src/calculator_zjz_two/Science.java | 40 +++++++++++----------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/calculator_zjz_two/Calculator_two.java b/src/calculator_zjz_two/Calculator_two.java index 01ce2c4..a6b116d 100644 --- a/src/calculator_zjz_two/Calculator_two.java +++ b/src/calculator_zjz_two/Calculator_two.java @@ -81,7 +81,7 @@ public class Calculator_two extends JFrame implements ActionListener{ Science kexue = new Science(); kexue.setVisible(true); } - }); + }); //点击标准,就切换成标准型计算器 this.setJMenuBar(top_menubar); //将菜单条添加到窗口 diff --git a/src/calculator_zjz_two/Science.java b/src/calculator_zjz_two/Science.java index cf3794a..1d443f1 100644 --- a/src/calculator_zjz_two/Science.java +++ b/src/calculator_zjz_two/Science.java @@ -20,7 +20,7 @@ import javax.swing.JMenuItem; public class Science extends JFrame implements ActionListener { - private String[] cen_name = {"x^2","x^3","x^x","sqrt","10^x","x!", + private String[] east_name = {"x^2","x^3","x^x","sqrt","10^x","x!", "ln","lg","%","sin","cos","tan","PI","e","e^x"}; //计算器的主体按键 private String[] west_name = {"Back","C","*","/","7","8","9","+","4","" + "5","6","-","1","2","3","|x|","0",".","=","1/x"}; //计算器的左边的按键 @@ -28,7 +28,7 @@ public class Science extends JFrame implements ActionListener { private JMenuBar top_menubar = new JMenuBar(); //新建菜单条 private JPanel cal_west = new JPanel(); //新建西面的面板 - private JPanel cal_center = new JPanel(); //新键中间的面板 + private JPanel cal_east = new JPanel(); //新建东面的面板 private JTextField text = new JTextField(); //声明了组件:文本框,用于输入文本 @@ -41,7 +41,7 @@ public class Science extends JFrame implements ActionListener { this.addMenubar(); //调用方法添加菜单 this.addText(); //调用方法添加文本框 this.addWest(); //调用方法添加西面的控件 - this.addCenter(); //调用方法添加中间的控件 + this.addEast(); //调用方法添加东面的控件 } @@ -50,7 +50,7 @@ public class Science extends JFrame implements ActionListener { public void init() { //将对窗口的初始化封装一个方法 this.setTitle("张家中330的科学计算器"); //命名一个窗口 - this.setBounds(100,100,550,400); //设置窗口的大小(宽500,高400)及初始位置(距屏幕左边和上方均为100个像素点) + this.setBounds(100,100,550,400); //设置窗口的大小(宽550,高400)及初始位置(距屏幕左边和上方均为100个像素点) this.setLayout(new BorderLayout()); //设置窗体的布局为BorderLayout this.setResizable(false); //设置窗体不可调整大小 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //点击关闭时隐藏窗口 @@ -74,15 +74,15 @@ public class Science extends JFrame implements ActionListener { JMenu menu = new JMenu("模式"); //创建和设置菜单名 JMenuItem standard = new JMenuItem("标准型"); //创建菜单项 JMenuItem science = new JMenuItem("科学型"); - menu.add(standard); //将菜单项添加到"查看"菜单上 + menu.add(standard); //将菜单项添加到"模式"菜单上 menu.add(science); top_menubar.add(menu); //将菜单添加到菜单条中 standard.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent a) { Calculator_two ordinary = new Calculator_two(); - ordinary.setVisible(true); + ordinary.setVisible(true); } - }); + }); //点击标准,就切换成标准型计算器 this.setJMenuBar(top_menubar); //将菜单条添加到窗口 @@ -112,22 +112,22 @@ public class Science extends JFrame implements ActionListener { } - /*********************************添加中间的控件*******************************************/ + /*********************************添加东面的控件*******************************************/ - public void addCenter() { + public void addEast() { - cal_center.setLayout(new GridLayout(5,3,2,1)); //中间的面板使用GridLayout布局 + cal_east.setLayout(new GridLayout(5,3,2,1)); //东面的面板使用GridLayout布局 for(int i=0;i<15;i++) { - JButton cen_btn = new JButton(); //中间面板的中间的按钮 - cen_btn.setText(cen_name[i]); //利用for循环命名中间的中间center_cen的按钮 - cen_btn.setFont(new Font("宋体",Font.BOLD,15)); - cen_btn.setForeground(Color.BLUE); //按钮为蓝色 - cen_btn.addActionListener(this); //添加监听器 - cal_center.add(cen_btn); + JButton east_btn = new JButton(); //中间面板的中间的按钮 + east_btn.setText(east_name[i]); //利用for循环命名东面east_btn的按钮 + east_btn.setFont(new Font("宋体",Font.BOLD,15)); + east_btn.setForeground(Color.BLUE); //按钮为蓝色 + east_btn.addActionListener(this); //添加监听器 + cal_east.add(east_btn); } - this.add(cal_center,BorderLayout.EAST); //将cal_center 中间的面板添加到窗体的 + this.add(cal_east,BorderLayout.EAST); //将cal_center添加到窗体的东面 } @@ -150,8 +150,8 @@ public class Science extends JFrame implements ActionListener { }else if(click.equals("C")) { //如果点击了C清零 this.text.setText(""); //将文本框清空 } - else if(click.equals("Back")) { - handleBack(); + else if(click.equals("Back")) { //点击"Back" + handleBack(); //将执行Back的代码封装成方法 } else if(click.equals("e")) { this.text.setText("3.1415926"); @@ -221,7 +221,7 @@ public class Science extends JFrame implements ActionListener { } - /***********************处理功能键(sqrt 1/x +/- % sin cos x^2 |x|)的方法*****************/ + /***********************处理功能键的方法*****************/ private void handleFun() { -- Gitee