diff --git a/src/java2020spring/CalculatorFrame.java b/src/java2020spring/CalculatorFrame.java new file mode 100644 index 0000000000000000000000000000000000000000..b791f359d98db4bd08f72cdcb3eeeeb8a9593016 --- /dev/null +++ b/src/java2020spring/CalculatorFrame.java @@ -0,0 +1,376 @@ +package java2020spring; + +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.math.BigDecimal; + +import javax.swing.*; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.PlainDocument; + +public class CalculatorFrame extends JFrame implements ActionListener{ + private static final long serialVersionUID = 1L; + /*定义一些需要的变量*/ + JTextField textResult=new JTextField(); + JLabel labelSave=new JLabel(); + JButton b_bf=new JButton("%");JButton b_fs=new JButton("1/X");JButton b_gh=new JButton("√");JButton b_pf=new JButton("X^2"); + JButton b_ql=new JButton("C");JButton b_js=new JButton("介绍");/*JButton b_kh=new JButton("( )");*/JButton b_tg=new JButton("←");JButton b_divide=new JButton("÷"); + JButton b_7=new JButton("7");JButton b_8=new JButton("8");JButton b_9=new JButton("9");JButton b_multiply=new JButton("×"); + JButton b_4=new JButton("4");JButton b_5=new JButton("5");JButton b_6=new JButton("6");JButton b_minus=new JButton("-"); + JButton b_1=new JButton("1");JButton b_2=new JButton("2");JButton b_3=new JButton("3");JButton b_plus=new JButton("+"); + JButton b_0=new JButton("0");JButton b_dot=new JButton(".");JButton b_dy=new JButton("="); + JButton b_bc=new JButton("保存");JButton b_qc=new JButton("清除"); + String n1="",n2="",Result="",Save=""; + String regex = "[0-9]*",regex2="[^0-9]*"; + double result=0,save=0; + double i=0,times=0; + char symbol=0; + //boolean kuohao=true; + public CalculatorFrame() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + /*设置一个存数Label和一个输入TextField*/ + textResult.setBounds(15,15,268,55); + textResult.setFont(new Font("微软黑体",Font.PLAIN, 25)); + textResult.setHorizontalAlignment(SwingConstants.RIGHT); + textResult.setVisible(true); + this.add(textResult); + labelSave.setBounds(15,65,268,45); + setLayout(null); + labelSave.setFont(new Font("微软黑体",Font.PLAIN, 25)); + this.add(labelSave); + /*编写三个不同的按钮方法并添加按钮到frame中*/ + //第一行 + aB1(b_bf,15,110,65,65); + aB1(b_fs,83,110,65,65); + aB1(b_gh,150,110,65,65); + aB1(b_pf,217,110,65,65); + //第二行 + aB2(b_ql,15,178,65,65); + aB2(b_js,83,178,65,65); + aB2(b_tg,150,178,65,65); + aB1(b_divide,217,178,65,65); + //第三行 + aB2(b_7,15,246,65,65); + aB2(b_8,83,246,65,65); + aB2(b_9,150,246,65,65); + aB1(b_multiply,217,246,65,65); + //第四行 + aB2(b_4,15,314,65,65); + aB2(b_5,83,314,65,65); + aB2(b_6,150,314,65,65); + aB1(b_minus,217,314,65,65); + //第五行 + aB2(b_1,15,382,65,65); + aB2(b_2,83,382,65,65); + aB2(b_3,150,382,65,65); + aB1(b_plus,217,382,65,65); + //第六行 + aB2(b_0,15,450,133,65); + aB2(b_dot,150,450,65,65); + aB3(b_dy,217,450,65,65); + //第七行 + aB1(b_qc,15,518,133,35); + aB1(b_bc,150,518,132,35); + } + public void aB1(JButton button,int a,int b,int c,int d) { + button.setBounds(a, b, c, d); + button.setFont(new Font("微软雅黑",Font.BOLD,15)); + button.setBackground(new Color(96,86,83)); + button.setForeground(new Color(247,154,51)); + add(button); + button.addActionListener(this); + } + public void aB2(JButton button,int a,int b,int c,int d) { + button.setBounds(a, b, c, d); + button.setFont(new Font("微软雅黑",Font.BOLD,15)); + button.setBackground(new Color(96,86,83)); + button.setForeground(Color.WHITE); + add(button); + button.addActionListener(this); + } + public void aB3(JButton button,int a,int b,int c,int d) { + button.setBounds(a, b, c, d); + button.setFont(new Font("微软雅黑",Font.BOLD,15)); + button.setBackground(new Color(247,154,51)); + button.setForeground(Color.WHITE); + add(button); + button.addActionListener(this); + } + /*设置监听器*/ + public void actionPerformed(ActionEvent e) { + try { + /**********第一行**********/ + if(e.getSource()==b_bf) { + i=Double.parseDouble(textResult.getText()); + Result=String.valueOf(i/100); + textResult.setText(Result); + }//百分号 + if(e.getSource()==b_fs) { + i=Double.parseDouble(Result); + result=1/i; + Result=""+result; + textResult.setText(Result); + }//倒数 + if(e.getSource()==b_gh) { + i=Double.parseDouble(Result); + result=Math.sqrt(i); + Result=""+result; + textResult.setText(Result); + }//开根号 + if(e.getSource()==b_pf) { + i=Double.parseDouble(Result); + result=i*i; + Result=""+result; + textResult.setText(Result); + }//平方 + /**********第二行**********/ + if(e.getSource()==b_ql) { + Result=""; + result=0; + symbol=0; + times=0; + if(labelSave.getText().equals("请按C继续使用计算器")) { + Save=""; + labelSave.setText(Save); + } + textResult.setText(Result); + }//清零 + if(e.getSource()==b_js) { + textResult.setText("2019级信管1班陈宗杰"); + labelSave.setText("请按C继续使用计算器"); + }//介绍 + /*if(e.getSource()==b_kh) { + if(kuohao) { + Result+="("; + textResult.setText(Result); + kuohao=false; + } + else { + Result+=")"; + textResult.setText(Result); + kuohao=true; + } + }*///括号 + if(e.getSource()==b_tg) { + if(textResult.getText().length()>0) { + textResult.setText(textResult.getText().substring(0,textResult.getText().length()-1)); + if(textResult.getText().length()==0) { + Result=""; + result=0; + symbol=0; + } + } + }//退格 + if(e.getSource()==b_divide) { + Result="÷"; + n1=textResult.getText(); + textResult.setText(Result); + symbol=1; + times+=1; + }//除号 + /**********第三行**********/ + if(e.getSource()==b_7) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=7; + } + else if(n1.matches(regex2)) { + Result+=7; + } + else { + Result="7"; + } + textResult.setText(Result); + } + if(e.getSource()==b_8) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=8; + } + else if(n1.matches(regex2)) { + Result+=8; + } + else { + Result="8"; + } + textResult.setText(Result); + } + if(e.getSource()==b_9) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=9; + } + else if(n1.matches(regex2)) { + Result+=9; + } + else { + Result="9"; + } + textResult.setText(Result); + } + if(e.getSource()==b_multiply) { + Result="×"; + n1=textResult.getText(); + textResult.setText(Result); + symbol=2; + times+=1; + }//乘号 + /**********第四行**********/ + if(e.getSource()==b_4) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=4; + } + else if(n1.matches(regex2)) { + Result+=4; + } + else { + Result="4"; + } + textResult.setText(Result); + } + if(e.getSource()==b_5) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=5; + } + else if(n1.matches(regex2)) { + Result+=5; + } + else { + Result="5"; + } + textResult.setText(Result); + } + if(e.getSource()==b_6) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=6; + } + else if(n1.matches(regex2)) { + Result+=6; + } + else { + Result="6"; + } + textResult.setText(Result); + } + if(e.getSource()==b_minus) { + Result="-"; + n1=textResult.getText(); + textResult.setText(Result); + times+=1; + }//减号 + /**********第五行**********/ + if(e.getSource()==b_1) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=1; + } + else if(n1.matches(regex2)) { + Result+=1; + } + else { + Result="1"; + } + textResult.setText(Result); + } + if(e.getSource()==b_2) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=2; + } + else if(n1.matches(regex2)) { + Result+=2; + } + else { + Result="2"; + } + textResult.setText(Result); + } + if(e.getSource()==b_3) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=3; + } + else if(n1.matches(regex2)) { + Result+=3; + } + else { + Result="3"; + } + textResult.setText(Result); + } + if(e.getSource()==b_plus) { + Result="+"; + n1=textResult.getText(); + textResult.setText(Result); + symbol=3; + times+=1; + }//加号 + /**********第六行**********/ + if(e.getSource()==b_0) { + if (textResult.getText().matches(regex)||textResult.getText().contains(".")) { + Result+=0; + } + else if(n1.matches(regex2)) { + Result+=0; + } + else { + Result="0"; + } + textResult.setText(Result); + } + if(e.getSource()==b_dot) { + Result+="."; + textResult.setText(Result); + }//小数点 + if(e.getSource()==b_dy) { + n2=textResult.getText(); + if(times!=1) { + if(symbol==1) { + textResult.setText("我还不会连续除(:qゝ∠)"); + } + else if(symbol==2) { + textResult.setText("我还不会连续乘(:qゝ∠)"); + } + else if(symbol==3) { + textResult.setText("我还不会连续加(:qゝ∠)"); + } + else { + textResult.setText("我还不会连续减(:qゝ∠)"); + } + labelSave.setText("请按C继续使用计算器"); + } + else { + if(symbol==1) { + result=Double.parseDouble(n1)/Double.parseDouble(n2); + } + else if(symbol==2) { + result=Double.parseDouble(n1)*Double.parseDouble(n2); + } + else if(symbol==3) { + result=Double.parseDouble(n1)+Double.parseDouble(n2); + } + else { + result=Double.parseDouble(n1)-Double.parseDouble(n2); + } + Result=""+result; + BigDecimal db = new BigDecimal(Result); + textResult.setText(db.toPlainString()); + } + }//等于 + /*if(e.getSource()==b_dy&×!=1) { + + }*/ + /**********第七行**********/ + if(e.getSource()==b_bc) { + Save=Save+" "+textResult.getText(); + labelSave.setText(""+Save); + }//保存 + if(e.getSource()==b_qc) { + Save=""; + labelSave.setText(Save); + }//清除 + } + catch(Exception E1) { + textResult.setText("出错"); + } + } +} + + + diff --git a/src/java2020spring/MainClass.java b/src/java2020spring/MainClass.java new file mode 100644 index 0000000000000000000000000000000000000000..e3de222f8b4fe8e11713dd7fdbf4fb7162a671e5 --- /dev/null +++ b/src/java2020spring/MainClass.java @@ -0,0 +1,12 @@ +package java2020spring; + +public class MainClass { + public static void main(String args[]) { + CalculatorFrame frame=new CalculatorFrame(); + frame.setTitle("计算器 By CZJ"); + frame.setVisible(true); + frame.setBounds(500,100,311,620); + frame.setResizable(false); + } +} + diff --git a/src/java2020spring/Test.java b/src/java2020spring/Test.java deleted file mode 100644 index fc09c195f566d0e707f5e8a2f05fd168069c73a7..0000000000000000000000000000000000000000 --- a/src/java2020spring/Test.java +++ /dev/null @@ -1,10 +0,0 @@ -package java2020spring; - -public class Test { - - public static void main(String[] args) { - System.out.println("Hello world!"); - - } - -}