ZBLOG

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Calc...

//导入需要用到的包 import java.awt.BorderLayout; import java.awt.Button; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;

//定义一个Calculator类 public class Calculator {

//创建Frame、Panel和TextField对象以及16个按钮对象
Frame f = new Frame("计算器");
Panel p1 = new Panel();
Panel p2 = new Panel();
TextField tf = new TextField(30);
Button b0 = new Button("1");
Button b1 = new Button("2");
Button b2 = new Button("3");
Button b3 = new Button("/");
Button b4 = new Button("4");
Button b5 = new Button("5");
Button b6 = new Button("6");
Button b7 = new Button("*");
Button b8 = new Button("7");
Button b9 = new Button("8");
Button b10 = new Button("9");
Button b11= new Button("-");

Button b12 = new Button(“0”);

Button b13 =new 	Button ("c"); 
Button b14=	new 	Button("+"); 
Button	b15=	new 	Button("=");  
Button	b16=	new 	Button ("sin"); 
Button	b17=	new 	Button ("cos");  
Button	b18=	new 	Button ("tan"); 

Button b19= new Button (“log”);

//定义一个实现ActionListener接口的内部类A,用于监听所有按钮事件
A aa=new A();

//定义一个实现ActionListener接口的内部类A,用于监听所有按钮事件
class A implements ActionListener{
    @Override
    public void actionPerformed(ActionEvent e) {
        //获取点击的按钮的文本
        String s = e.getActionCommand();
        if(s.equals("c")) {//清零
            tf.setText("");
        }else if(s.equals("=")) {
            try {
                String str = tf.getText().trim();
                double result = 0.0;
                if(str.contains("+")) {
                    String num1 = str.substring(0,str.indexOf("+")).trim();
                    String num2 = str.substring(str.indexOf("+")+1).trim();
                    result = Double.parseDouble(num1)+Double.parseDouble(num2);
                }else if(str.contains("-")) {
                    String num1 = str.substring(0,str.indexOf("-")).trim();
                    String num2 = str.substring(str.indexOf("-")+1).trim();
                    result = Double.parseDouble(num1)-Double.parseDouble(num2);
                }else if(str.contains("*")) {
                    String num1 = str.substring(0,str.indexOf("*")).trim();
                    String num2 = str.substring(str.indexOf("*")+1).trim();
                    result = Double.parseDouble(num1)*Double.parseDouble(num2);
                }else if(str.contains("/")) {
                    String num1 = str.substring(0,str.indexOf("/")).trim();
                    String num2 = str.substring(str.indexOf("/")+1).trim();
                    if(num2.equals("0")) {
                        tf.setText("分母不能为0");
                        return;
                	}
                	result=Double.parseDouble(num1)/Double.parseDouble(num2);
            	}
            	tf.setText(String.valueOf(result));
        	}catch(Exception exception) {
            	tf.setText("输入有误");
        	}
    	}else if(s.equals("sin")) {
        	try {
           	 	String str=tf.getText().trim(); 
            	double num=Double.parseDouble (str); 
            	double result=Math.sin (num * Math.PI / 180); 
            	tf.setText (String.valueOf(result)); 
        	}catch(Exception exception) {
            	tf.setText("输入有误");
        	}
    	}else if(s.equals("cos")) {
        	try {
           	 	String str=tf.getText().trim(); 
            	double num=Double.parseDouble (str); 
            	double result=Math.cos (num * Math.PI / 180); 
            	tf.setText (String.valueOf(result)); 
        	}catch(Exception exception) {
            	tf.setText("输入有误");
        }
    }else if(s.equals("tan")) {
        try {
            String str = tf.getText().trim();
            double num = Double.parseDouble(str);
            double result = Math.tan(num * Math.PI / 180);
            tf.setText(String.valueOf(result));
        }catch(Exception exception) {
            tf.setText("输入有误");
        }
    }else if(s.equals("log")) {
        try {
            String str = tf.getText().trim();
            double num = Double.parseDouble(str);
            double result = Math.log(num);
            tf.setText(String.valueOf(result));
        }catch(Exception exception) {
            tf.setText("输入有误");
        }
    } else if (Character.isDigit(s.charAt(0))) { // 限制只能输入数字
        tf.setText(tf.getText() + s);
    }
}

}

//定义一个init()方法用于初始化界面 void init() {

p1.add(tf);
p2.setLayout(new GridLayout(5,4,5,5));
p2.add(b1);
p2.add(b2);
p2.add(b3);
p2.add(b0);
p2.add(b4);
p2.add(b5);
p2.add(b6);
p2.add(b7);
p2.add(b8);

p2.add(b9);
p2.add(b10);
p2. add(b11);
p2.add(b12);
p2. add(b13);

p2.add(b14);
p2.add(b15);
p2.add(b16);
p2.add(b17);
p2.add(b18);
p2.add(b19);

//为所有按钮添加监听器
b0.addActionListener(aa);
b1.addActionListener(aa);
b2.addActionListener(aa);
b3.addActionListener(aa);

b4.addActionListener(aa);
b5.addActionListener(aa);
b6.addActionListener(aa);
b7.addActionListener(aa); b8.addActionListener(aa); b9.addActionListener(aa); b10. addActionListener (aa) ; b11. addActionListener (aa) ; b12. addActionListener (aa) ; b13. addActionListener (aa) ; b14. addActionListener (aa) ;
b15. addActionListener (aa) ;
b16. addActionListener (aa) ;
b17 .addActionListener (aa) ;
b18 .addActionListener (aa) ;

 b19 .addActionListener (aa);

//将各个控件添加到Frame中,并设置Frame的属性
f.add(p1,BorderLayout.NORTH);
f.add(p2,BorderLayout.CENTER);
f.setSize(300,250);// 设置计算器窗口大小
f.setVisible(true);// 计算器窗口可见性设置为true

}

//定义一个main()方法,创建Calculator对象并调用init()方法初始化界面 public static void main(String[] args) {

new Calculator().init();

}

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=1162

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?