diff --git a/src/java2022spring/Jisuanqi.java b/src/java2022spring/Jisuanqi.java new file mode 100644 index 0000000000000000000000000000000000000000..36bd45ad4d0b56d19852a640e9fb3e5d75dc0ced --- /dev/null +++ b/src/java2022spring/Jisuanqi.java @@ -0,0 +1,268 @@ +package java2022spring; +import java.awt.*; +import javax.swing.*; +import java.awt.event.*; +public class Jisuanqi extends JFrame implements ActionListener { + JFrame ser =null; + JButton daoshu,add,reduce,multiply,chu,dian,qingkong,dengyu,pingfan,baifenhao,yi,er,san,si, + wu,liu,qi,ba,jiu,ling,qinglin,fou,fanhui,diergedengyug,kaigeng,duishu,zhengxainzhi,yuxain,MAXX,yuanzhoulv; + JTextField text =null; + JButton shuzu[]=new JButton[10]; + JPanel buju1=null; + JPanel buju2=null; + JPanel buju3=null; + + //控制面板的设置 + public void sever() { + ser=new JFrame("计算器");//设置标题 + text =new JTextField();//设置文本框 + buju1=new JPanel(); + buju2=new JPanel();//面板分2块区域 + ser.setLayout(new FlowLayout());//采用居中对齐布局 + ser.setResizable(false);//不允许改变窗口大小 + ser.add(text); + ser.setVisible(true);//设置窗口可见 + Font font=new Font("宋体",Font.BOLD,22); + text.setFont(font);//设置字体 + buju2.setLayout(new GridLayout(6,5,12,12));//GridLayout()方法设定几行几列多长多宽 + ser.add(buju2); + ser.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//结束窗口所在的应用程序 + ser.setSize(450,320); + ser.setLocation(300,200); + text.setColumns(30);//设置文本框的长度大小 + text.setEditable(false); + text.setBackground(Color.WHITE); + text.setHorizontalAlignment(SwingConstants.RIGHT); + this.addface(); + } + + //将运算符号和数字添加到容器里,再添加到面板上 + public void addface(){ + qinglin=new JButton("MC"); + qinglin.addActionListener(this); + qinglin.setForeground(Color.BLACK); + buju2.add(qinglin); + + fou=new JButton("MR"); + fou.addActionListener(this); + fou.setForeground(Color.BLACK); + buju2.add(fou); + + fanhui=new JButton("BACK"); + fanhui.addActionListener(this); + fanhui.setForeground(Color.BLACK); + buju2.add(fanhui); + + qingkong=new JButton("C"); + qingkong.setForeground(Color.BLUE); + qingkong.addActionListener(this); + buju2.add(qingkong); + + dengyu=new JButton("="); + dengyu.setForeground(Color.BLUE); + dengyu.addActionListener(this); + buju2.add(dengyu); + + yi=new JButton("1"); + yi.addActionListener(this); + buju2.add(yi); + + er=new JButton("2"); + er.addActionListener(this); + buju2.add(er); + + san=new JButton("3"); + san.addActionListener(this); + buju2.add(san); + + add=new JButton("+"); + add.setForeground(Color.BLUE); + add.addActionListener(this); + buju2.add(add); + + reduce=new JButton("-"); + reduce.setForeground(Color.BLUE); + reduce.addActionListener(this); + buju2.add(reduce); + + si=new JButton("4"); + si.addActionListener(this); + buju2.add(si); + + wu=new JButton("5"); + wu.addActionListener(this); + buju2.add(wu); + + liu=new JButton("6"); + liu.addActionListener(this); + buju2.add(liu); + + multiply=new JButton("*"); + multiply.setForeground(Color.BLUE); + multiply.addActionListener(this); + buju2.add(multiply); + + chu=new JButton("/"); + chu.setForeground(Color.BLUE); + chu.addActionListener(this); + buju2.add(chu); + + qi=new JButton("7"); + qi.addActionListener(this); + buju2.add(qi); + + ba=new JButton("8"); + ba.addActionListener(this); + buju2.add(ba); + + jiu=new JButton("9"); + jiu.addActionListener(this); + buju2.add(jiu); + + baifenhao=new JButton("%"); + baifenhao.setForeground(Color.RED); + baifenhao.addActionListener(this); + buju2.add(baifenhao); + + daoshu=new JButton("1/n"); + daoshu.setForeground(Color.RED); + daoshu.addActionListener(this); + buju2.add(daoshu); + + ling=new JButton("0"); + ling.addActionListener(this); + buju2.add(ling); + + dian=new JButton("."); + dian.addActionListener(this); + buju2.add(dian); + + pingfan=new JButton("pow"); + pingfan.setForeground(Color.RED); + pingfan.addActionListener(this); + buju2.add(pingfan); + + kaigeng=new JButton("sqrt"); + kaigeng.setForeground(Color.RED); + kaigeng.addActionListener(this); + buju2.add(kaigeng ); + + + + duishu=new JButton("log"); + duishu.setForeground(Color.RED); + duishu.addActionListener(this); + buju2.add(duishu); + + zhengxainzhi=new JButton("sin"); + zhengxainzhi.setForeground(Color.RED); + zhengxainzhi.addActionListener(this); + buju2.add(zhengxainzhi); + + yuxain=new JButton("cos"); + yuxain.setForeground(Color.RED); + yuxain.addActionListener(this); + buju2.add(yuxain); + + yuanzhoulv=new JButton("Π"); + yuanzhoulv.setForeground(Color.RED); + yuanzhoulv.addActionListener(this); + buju2.add(yuanzhoulv); + + MAXX=new JButton("MAXX"); + MAXX.setForeground(Color.RED); + MAXX.addActionListener(this); + buju2.add(MAXX); + + diergedengyug=new JButton("=="); + diergedengyug.setForeground(Color.RED); + diergedengyug.addActionListener(this); + buju2.add(diergedengyug); +} + + private String first=null; + private String operator=null; + private String Operator=null; + private String First=null; + + public void actionPerformed(ActionEvent e) { + String clickStr=e.getActionCommand(); + if(".0123456789".indexOf(clickStr) !=-1) {//运行时要先按清除键,否则一开始会出现0 + this.text.setText(text.getText()+clickStr);//把点击到的数字显示上去 + } + else if(clickStr.equals("+")||clickStr.equals("-")||clickStr.equals("*")||clickStr.equals("/")) + { + operator=clickStr; + first=this.text.getText();//记录第一次的值 + this.text.setText("");//清空文本框的值,显示第二次的值 + } + else if(clickStr.equals("=")||clickStr.equals("MR")) { + Double a=Double.valueOf(first);//获得点击运算符之前的数字 + Double b=Double.valueOf(this.text.getText()); + Double sum=null; + switch(operator) { + case "+": + sum=a+b;break; + case "-": + sum=a-b;break; + case "*": + sum=a*b;break; + case "/": + if(b!=0) { sum=a/b;} + break; + } + this.text.setText(sum.toString()); + } + + + else if(clickStr.equals("sqrt")||clickStr.equals("%")||clickStr.equals("1/n") + ||clickStr.equals("pow")||clickStr.equals("log")||clickStr.equals("sin") + ||clickStr.equals("cos")||clickStr.equals("MAXX")||clickStr.equals("Π")) + { + Operator=clickStr; + First=this.text.getText();//记录第一次的值 + this.text.setText("");//清空文本框的值,显示第二次的值 + } + else if(clickStr.equals("==")) { + Double c=Double.valueOf(First);//获得点击运算符之前的数字 + Double value=null; + Double m=c; + int n=2; + switch(Operator) { + case "sqrt": + value=Math.sqrt(c);break; + case "%": + value=c/100;break; + case "1/n": + value=1/c;break; + case "pow": + value=Math.pow(m,n);break; + case "log": + value=Math.log(c);break; + case "sin": + value=Math.sin(c);break; + case "cos": + value=Math.cos(c);break; + case "MAXX": + value=Math.floor(c);break; + case "Π": + value=c*Math.PI;break; + } + this.text.setText(value.toString()); + } + else if(clickStr.equals("C")||clickStr.equals("MC")) { + this.text.setText("");//清空文本框的值 + } + else if(clickStr.equals("BACK")) { + first=this.text.getText();//记录第一次的值 + int i=first.length(); + if(i>0) { + first=first.substring(0, i-1); + } + text.setText(first); + } + } + public static void main(String args[]) { + new Jisuanqi().sever(); + } + } \ No newline at end of file