基于java的简易计算器

界面:

 

下附源码:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Text1 extends JFrame {
	double houtai = 0;
	String ysf = "+";
	Font f = new Font("楷体", Font.PLAIN, 15);
	Font f2 = new Font("楷体", Font.BOLD, 18);

	public Text1() {
		this.setTitle("计算器");
		this.setSize(230, 390);
		this.setLocation(300, 120);
		// ----------------------------------------------

		JPanel jp1 = new JPanel(); // 中间容器 panel
		JPanel jp2 = new JPanel(); // 中间容器 panel
		JTextField jtf = new JTextField(); // 文本框
		jtf.setEditable(false); // 设置不可编辑
		
		this.setJMenuBar(setcaidan(this));
		// --------------------------------------------------

		this.setLayout(null); // 不使用管理器
		this.add(jtf);
		jtf.setBounds(5, 5, 202, 60); // 文本框位置 高 40 宽 205
		jtf.setFont(f2);
		this.add(jp1);
		jp1.setBounds(5, 65, 205, 260); // 容器位置
		
		jp1.setLayout(null);
		jp1.add(jp2);
		jp2.setBounds(0, 55, 150, 150); // jp2 3*3 位置
		jp2.setLayout(new GridLayout(3, 3, 3, 3));
		// --------------------------------------------------

		int kuan = 48;
		int gao = 48;

		JButton jb[] = new JButton[17];
		for (int i = 6; i < 9; i++) {
			jb[i] = new JButton(i + 1 + "");
			jb[i].setFont(f);
			jp2.add(jb[i]);
		}
		for (int i = 3; i < 6; i++) {
			jb[i] = new JButton(i + 1 + "");
			jb[i].setFont(f);
			jp2.add(jb[i]);
		}

		for (int i = 0; i < 3; i++) {
			jb[i] = new JButton(i + 1 + "");
			jb[i].setFont(f);
			jp2.add(jb[i]);
		}

		jb[9] = new JButton("/");
		jp1.add(jb[9]);
		jb[9].setBounds(0, 5, kuan, gao);

		jb[10] = new JButton("*");
		jp1.add(jb[10]);
		jb[10].setBounds(51, 5, kuan, gao);

		jb[11] = new JButton("-");
		jp1.add(jb[11]);
		jb[11].setBounds(102, 5, kuan, gao);

		jb[12] = new JButton("C");
		jp1.add(jb[12]);
		jb[12].setBounds(153, 5, kuan, gao);

		jb[13] = new JButton("+");
		jp1.add(jb[13]);
		jb[13].setBounds(153, 55, kuan, gao * 2 + 3);
		jb[13].setFont(f2);

		jb[14] = new JButton("=");
		jp1.add(jb[14]);
		jb[14].setBounds(153, 157, kuan, gao * 2 + 3);
		jb[14].setFont(f2);

		jb[15] = new JButton(".");
		jp1.add(jb[15]);
		jb[15].setBounds(102, 208, kuan, gao);

		jb[16] = new JButton("0");
		jp1.add(jb[16]);
		jb[16].setBounds(0, 208, kuan * 2 + 3, gao);
		jb[16].setFont(f2);

		for (int i = 0; i < 17; i++) {
			jb[i].addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					JButton jj = (JButton) arg0.getSource();
					String s = jj.getText();
					try {
						jtf.setText(jtf.getText() + Integer.parseInt(s));
					} catch (Exception e) {
						if (jtf.getText().toString().equals("")){   // 判断输入    // 输入了数据		
							if(s=="C")
								   jtf.setText("");
						}
							
					    else{
						switch (s) {
					
						
						case "C":
							houtai = 0;
							ysf = "+";
							jtf.setText("");
							break;
						case "=":
							try{
							double jg = ys(houtai, Double.parseDouble(jtf.getText()), ysf);
							if ((jg % 1.0) == 0)
								jtf.setText((int) jg + "");
							else
								jtf.setText(jg + "");}
							catch(Exception e1){
								System.out.println("计算格式错误,或不支持此计算!");
							}
							break;
						case ".":
							jtf.setText(jtf.getText() + s);
							break;
						default:
							ysf = s;
							houtai = Double.parseDouble(jtf.getText());
							jtf.setText("");
							break;
						}
					}
						}
				}
			});
		}
		this.setVisible(true);
	}

	public double ys(double i1, double i2, String ysf) {
		double sum = 0;
		switch (ysf) {
		case "+":
			sum = i1 + i2;
			break;
		case "-":
			sum = i1 - i2;
			break;
		case "*":
			sum = i1 * i2;
			break;
		case "/":
			sum = i1 / i2;
			break;
		}
		return sum;
	}

	public JMenuBar setcaidan(JFrame jf) {
		JMenuBar menu = new JMenuBar(); // 菜单栏
		menu.setFont(f); // 菜单栏设置字体
		JMenu jm1 = new JMenu("  开始  "); // 菜单
		JMenu jm2 = new JMenu("  关于  ");
		menu.add(jm1);
		menu.add(jm2);

		// ----------------------------
		JMenuItem mt1 = new JMenuItem("说明");
		JMenuItem mt2 = new JMenuItem("退出");
		jm1.add(mt1);
		jm1.addSeparator();
		jm1.add(mt2);
		mt1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				JDialog jd1 = new JDialog(jf, "说明");
				jd1.setLayout(new BorderLayout());
				JTextArea ja = new JTextArea("本计算机只支持四则运算!");
				ja.setEditable(false);
				jd1.add(ja);
				jd1.setSize(200, 200);
				jd1.setLocation(jf.getX(), jf.getY());
				jd1.setVisible(true);
			}
		});
		mt2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);
			}
		});

		// 菜单 关于
		// ----------------------------------------------------
		JMenuItem mt3 = new JMenuItem("关于软件");
		JMenuItem mt4 = new JMenuItem("关于作者");
		jm2.add(mt3);
		jm2.addSeparator();
		jm2.add(mt4);
		mt3.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				JDialog jd2 = new JDialog(jf, "关于软件");
				jd2.setLayout(new BorderLayout()); // 设置边界布局管理器
				JTextArea ja2 = new JTextArea("由于本人的技术,时间,精力有限;\n计算器目前还不支持一些高级运算;\n请期待2.0版本的上线!");
				ja2.setEditable(false);
				jd2.add(ja2);
				jd2.setSize(220, 200);
				jd2.setLocation(jf.getX(), jf.getY());
				jd2.setVisible(true);
			}
		});
		mt4.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				JDialog jd2 = new JDialog(jf, "关于作者");
				jd2.setLayout(new BorderLayout()); // 设置边界布局管理器
				JTextArea ja2 = new JTextArea("  QQ: xxxx--xxxx--xxxx--xxx\n  @蜻蜓");
				ja2.setEditable(false);
				jd2.add(ja2);
				jd2.setSize(220, 200);
				jd2.setLocation(jf.getX(), jf.getY());
				jd2.setVisible(true);
			}
		});
		return menu;
	}

	public static void main(String[] args) {

		new Text1();

	}

}

学习java的第一个完整程序,欢迎指点!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值