使用Java编写一个简单计算器

使用Java编写一个简单计算器

程序编写思路:
在编写这个计算器小程序时,首先需要对窗体和窗体中的组件有一个合理的布局,使编写出来的窗体看着美观简洁又实用.其次就是要注意对运算符和数字键的处理,为这些数字键和运算符键添加动作监听,使其在点击时,能够在文本框中输入相应的值.然后通过对文本框添加监听,获取文本框中的值,再进行相应的运算,并将结果输出的结果显示文本框中.
此程序的难点在于对于动作监听的使用,以及对文本框中内容转化为相应的数字和字符进行相应的运算.

程序的输出显示样例:
使用Java编写一个简单计算器
程序源代码:

// package 计算器;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.StringTokenizer;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class jisuanqi extends JFrame{
	JPanel panel;
	JTextField text;
	//"0--9"JButton
	JButton jb0,jb1,jb2,jb3,jb4,jb5,jb6,jb7,jb8,jb9;
    //"+,-,*,/,."JButton
	JButton add,sub,mul,div,bot,equ;
	
	public jisuanqi(){
		this.setBounds(300,200,400,300);
		this.setTitle("计算器");
		this.setLayout(new BorderLayout());//设置计算机窗体布局方式
		text =new JTextField(15);
		
		//新建数字按钮
	    jb0 = new JButton("0");
	    jb1 = new JButton("1");
	    jb2 = new JButton("2");
	    jb3 = new JButton("3");
	    jb4 = new JButton("4");
	    jb5 = new JButton("5");
	    jb6 = new JButton("6");
	    jb7 = new JButton("7");
	    jb8 = new JButton("8");
	    jb9 = new JButton("9");
        
	    //新建符号按钮
	    add = new JButton("+");
	    sub = new JButton("-");
	    mul = new JButton("*");
	    div = new JButton("/");
	    equ = new JButton("=");
	    bot = new JButton("'");
	    //新建计算器数字及符号所在区域面板
	    panel= new JPanel();
	    panel.setLayout(new GridLayout(4,4));        
        //讲个按钮组建放入面板
	    //第一行
	    panel.add(jb7);
	    panel.add(jb8);
	    panel.add(jb9);
	    panel.add(div);
	    //第二行
	    panel.add(jb4);
	    panel.add(jb5);
	    panel.add(jb6);
	    panel.add(mul);
	    //第三行
	    panel.add(jb1);
	    panel.add(jb2);
	    panel.add(jb3);
	    panel.add(sub);
	    //第四行
	    panel.add(bot);
	    panel.add(jb0);
	    panel.add(equ);
	    panel.add(add);
	    
		this.add(text,BorderLayout.NORTH);
	    this.add(panel);
	    
	    MyEvent();//事件处理
	    this.setVisible(true);
	    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置面板可关闭
	}
	public void MyEvent(){
	    //给各数字键添加点击事件
	    Text(jb0);
	    Text(jb1);
	    Text(jb2);
	    Text(jb3);
	    Text(jb4);
	    Text(jb5);
	    Text(jb6);
	    Text(jb7);
	    Text(jb8);
	    Text(jb9);
	    Text(add);
	    Text(sub);
	    Text(mul);
	    Text(div);
	    Text(bot);
	    Text(equ);
	    equ.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				text.setText(text.getText()+equ.getText());
				if(text.getText().contains("+")){
					StringTokenizer st1 = new StringTokenizer(text.getText(),"+");
					double d1,d2=0;
					d1 = Double.parseDouble(st1.nextToken());
					while(st1.hasMoreTokens()){
						StringTokenizer st2 = new StringTokenizer(st1.nextToken(),"=");
						d2 = Double.parseDouble(st2.nextToken());
					}
					text.setText(text.getText()+""+(d1+d2));
					}
				}	
		});
	}
	//各按钮的时间处理方法
	public void Text(JButton button){
		button.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				String str=button.getText();
				System.out.println(str);
				text.setText(text.getText() + str);
			}
		});
	}
	public static void main(String[] args) {
		new jisuanqi();
	}
}