java用制作小计算器

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Caculator implements ActionListener {

	private JFrame frame;
	private JTextField jtx;
	private JButton[] bus;
	private char[] strs;
	private JButton bu;
	private String d_one = "";
	private String operator = "";

	public static void main(String[] args) {
		new Caculator();
	}

	public Caculator() {
		// 定义一个框架,显示信息为“计算器”
		frame = new JFrame("计算器");
		// 定义文本框,长度定为14(JTextField是单行文本框,里面的内容只能显示为一行)
		jtx = new JTextField(14);
		// 创建16个按钮
		bus = new JButton[16];
		strs = "789/456*123-0%+=".toCharArray();
		// 给每个按钮添加一个显示信息,并且创建点击监听
		for (int i = 0; i < 16; i++) {
			bus[i] = new JButton(strs[i] + "");
			bus[i].addActionListener(this);
		}
		bu = new JButton("AC");
		bu.addActionListener(this);
		init();
	}

	public void init() {
		// 创建一个中间容器,用来存放文本框和按钮
		JPanel jp1 = new JPanel();
		jp1.add(jtx);
		jp1.add(bu);
		frame.add(jp1, BorderLayout.NORTH);
		JPanel jp2 = new JPanel();
		jp2.setLayout(new GridLayout(4, 4));
		for (int i = 0; i < 16; i++) {
			jp2.add(bus[i]);
		}
		frame.add(jp2, BorderLayout.CENTER);
		// 根据窗口的布局和组件来确定边框的大小
		frame.pack();
		frame.setLocation(300, 400);
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	@Override
	public void actionPerformed(ActionEvent actionEvent) {
		String conn = actionEvent.getActionCommand();
		if ("AC".equals(conn)) {
			d_one = "";
			operator = "";
			jtx.setText("");
			return;
		}
		if (("+-*/%".indexOf(conn)) != -1) {
			if ("".equals(d_one) && "".equals(jtx.getText()))
				return;
			d_one = jtx.getText();
			operator = conn;
			jtx.setText("");
			return;
		}
		if ("=".equals(conn)) {
			if ("".equals(d_one) && "".equals(jtx.getText()))
				return;
			double value = 0;
			if ("+".equals(operator)) {
				value = Double.parseDouble(d_one)
						+ Double.parseDouble(jtx.getText());
				jtx.setText(value + "");
			}
			if ("-".equals(operator)) {
				value = Double.parseDouble(d_one)
						- Double.parseDouble(jtx.getText());
				jtx.setText(value + "");
			}
			if ("*".equals(operator)) {
				value = Double.parseDouble(d_one)
						* Double.parseDouble(jtx.getText());
				jtx.setText(value + "");
			}
			if ("/".equals(operator)) {
				value = Double.parseDouble(d_one)
						/ Double.parseDouble(jtx.getText());
				jtx.setText(value + "");
			}
			if ("%".equals(operator)) {
				value = Double.parseDouble(d_one)
						% Double.parseDouble(jtx.getText());
				jtx.setText(value + "");
			}
			d_one = value + "";
			return;
		}
		jtx.setText(jtx.getText() + conn);
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值