diff --git a/src/java2020spring/Test.java b/src/java2020spring/Test.java index fc09c195f566d0e707f5e8a2f05fd168069c73a7..effc1ced9bfab329aa324ebc17bc44b79c6be21f 100644 --- a/src/java2020spring/Test.java +++ b/src/java2020spring/Test.java @@ -1,10 +1,302 @@ package java2020spring; - -public class Test { - - public static void main(String[] args) { - System.out.println("Hello world!"); - +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +public class Test extends JFrame implements ActionListener{ + JMenuBar menubar; + JMenu choiceGrade; + JMenuItem grade1,grade2,grade3,grade4; + JPanel p1 = new JPanel(); + JTextField t = new JTextField("0"); + JPanel p2 = new JPanel(); + JButton b[] = new JButton[24]; + double n1,n2,n3; + boolean end,add,sub,mul,div,squ,pow3,perc,bediv,sqrt;//end表示输入的操作数是否已经结束 + public void setbutton(){ + b[0]=new JButton("x²"); + b[1]=new JButton("x³"); + b[2]=new JButton("%"); + b[3]=new JButton("1/x"); + b[4]=new JButton("√"); + b[5]=new JButton("C"); + b[6]=new JButton("C"); + b[7]=new JButton("÷"); + b[8]=new JButton("7"); + b[9]=new JButton("8"); + b[10]=new JButton("9"); + b[11]=new JButton("×"); + b[12]=new JButton("4"); + b[13]=new JButton("5"); + b[14]=new JButton("6"); + b[15]=new JButton("-"); + b[16]=new JButton("1"); + b[17]=new JButton("2"); + b[18]=new JButton("3"); + b[19]=new JButton("+"); + b[20]=new JButton(" "); + b[21]=new JButton("0"); + b[22]=new JButton("."); + b[23]=new JButton("="); + } + public Test(){ + this.setTitle("计算器"); + this.setVisible(true); + this.setResizable(false); + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setBounds(1000, 100, 400, 550); + this.add(p1,"North"); + p1.add(t); + t.setColumns(28); + t.setHorizontalAlignment(JTextField.RIGHT); + t.setEditable(false); + GridLayout g1 = new GridLayout(6,4); + g1.setHgap(10); + g1.setVgap(10); + p2.setLayout(g1); + this.add(p2); + setbutton(); + for(int i=0;i<24;i++) { + p2.add(b[i]); + } + + menubar=new JMenuBar(); + choiceGrade =new JMenu("计算器"); + grade1 = new JMenuItem("标准"); + grade2 = new JMenuItem("科学"); + grade3 = new JMenuItem("程序员"); + grade4 = new JMenuItem("日期计算"); + choiceGrade.add(grade1); + choiceGrade.add(grade2); + choiceGrade.add(grade3); + choiceGrade.add(grade4); + menubar.add(choiceGrade); + this.setJMenuBar(menubar); + + //为按钮增加监听者 + for(int i=0;i<24;i++) { + b[i].addActionListener(this); + } + } + + public void num(int i) { + String s = String.valueOf(i);//将整形转换为文本 + if(end) {//判断操作数是否结束 + t.setText("0");//结束将文本框中还原为原来的数据 + end=false; + } + if(t.getText().equals("0")) { + t.setText(s); + } + else { + String str=t.getText()+s; + t.setText(str); + } + } + + public void sign(int i) { + if(i==1) {//加法 + add=true; + sub=false; + mul=false; + div=false; + squ=false; + pow3=false; + perc=false; + bediv=false; + sqrt=false; + } + if(i==2) {//减法 + add=false; + sub=true; + mul=false; + div=false; + squ=false; + pow3=false; + perc=false; + bediv=false; + sqrt=false; + } + if(i==3) {//乘法 + add=false; + sub=false; + mul=true; + div=false; + squ=false; + pow3=false; + perc=false; + bediv=false; + sqrt=false; + } + if(i==4) {//除法 + add=false; + sub=false; + mul=false; + div=true; + squ=false; + pow3=false; + perc=false; + bediv=false; + sqrt=false; + } + if(i==5) {//平方squ + add=false; + sub=false; + mul=false; + div=false; + squ=true; + pow3=false; + perc=false; + bediv=false; + sqrt=false; + } + if(i==6) {//三次方pow3 + add=false; + sub=false; + mul=false; + div=false; + squ=false; + pow3=true; + perc=false; + bediv=false; + sqrt=false; + } + if(i==7) {//百分perc + add=false; + sub=false; + mul=false; + div=false; + squ=false; + pow3=false; + perc=true; + bediv=false; + sqrt=false; + } + if(i==8) {//倒数 + add=false; + sub=false; + mul=false; + div=false; + squ=false; + pow3=false; + perc=false; + bediv=true; + sqrt=false; + } + if(i==9) {//开二次根sqrt + add=false; + sub=false; + mul=false; + div=false; + squ=false; + pow3=false; + perc=false; + bediv=false; + sqrt=true; + } + n1=Double.parseDouble(t.getText());//将数据存到n1中 + end=true; + } + + public void point() {//处理小数点 + String s; + if(t.getText().indexOf('.')<0) {//判断文本信息中有没有小数点 + s=t.getText()+".";//使用t获取文本 在后面加小数点 + t.setText(s);//将信息存放到文本框中 + } } - + + + public void clear() { + t.setText("0"); + } + + + public void eql() {//处理=号 + n2=Double.parseDouble(t.getText()); + if(add) { + n3=n1+n2; + } + if(sub) { + n3=n1-n2; + } + if(mul) { + n3=n1*n2; + } + if(div) { + n3=n1/n2; + } + if(squ) { + n3=n1*n1; + } + if(pow3) { + n3=n1*n1*n1; + } + if(perc) { + n3=n1/100; + } + if(bediv) { + n3=1/n1; + } + if(sqrt) { + n3=Math.sqrt(n1); + } + String s = String .valueOf(n3); + t.setText(s); + end=true; + } + + + public void actionPerformed(ActionEvent e) { + if(e.getSource()==b[0]) + sign(5); + if(e.getSource()==b[1]) + sign(6); + if(e.getSource()==b[2]) + sign(7); + if(e.getSource()==b[3]) + sign(8); + if(e.getSource()==b[4]) + sign(9); + if(e.getSource()==b[5]) + clear(); + if(e.getSource()==b[6]) + clear(); + if(e.getSource()==b[7]) + sign(4); + if(e.getSource()==b[8]) + num(7); + if(e.getSource()==b[9]) + num(8); + if(e.getSource()==b[10]) + num(9); + if(e.getSource()==b[11]) + sign(3); + if(e.getSource()==b[12]) + num(4); + if(e.getSource()==b[13]) + num(5); + if(e.getSource()==b[14]) + num(6); + if(e.getSource()==b[15]) + sign(2); + if(e.getSource()==b[16]) + num(1); + if(e.getSource()==b[17]) + num(2); + if(e.getSource()==b[18]) + num(3); + if(e.getSource()==b[19]) + sign(1); + if(e.getSource()==b[21]) + num(0); + if(e.getSource()==b[22]) + point(); + if(e.getSource()==b[23]) + eql(); + } + + public static void main(String[] args) { + Test test = new Test(); + } + }