⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.java

📁 java Swing 做的计算器 课程设计
💻 JAVA
字号:
package org.han.calculator;

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 Calculator {
	private static final int LENGTH_J_TEXT_FIELD = 20;// 定义文本长度
	private static double value = 0;
	private static int control = 0;// 点击=号时判断是+,-,*,/的哪一个

	JTextField jtf = new JTextField(LENGTH_J_TEXT_FIELD);

	@SuppressWarnings("static-access")
	public Calculator() {
		JFrame jf = new JFrame("计算器");
		JPanel jp = new JPanel();// 定义标签
		jp.setLayout(new GridLayout(5, 4));
		JButton[] jb = new JButton[20];
		String[] con = { "+", "7", "8", "9", "-", "4", "5", "6", "*", "1", "2",
				"3", "/", "0", "+/-", "1/x", ".", "=", "B", "C" };
		for (int i = 0; i < jb.length; i++) {
			jb[i] = new JButton(con[i]);
			jb[i].addActionListener(new ButtonListener());
			jp.add(jb[i]);// 将button添加到标签中
		}
		jf.add(jp, BorderLayout.CENTER);// 添加标签
		jf.add(jtf, BorderLayout.NORTH);// 添加文本框
		jf.setSize(400, 300);
		jf.pack();
		jf.setLocation(400, 200);
		jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);
		jf.setResizable(false);// 设置窗口不大小不可变
		jf.setVisible(true);
	}

	private class ButtonListener implements ActionListener {// 监听器
		public void actionPerformed(ActionEvent e) {
			String comm = e.getActionCommand();// 取得键盘标签
			if (comm.matches("^\\d{1}$")) {// 匹配0-9数字按钮
				jtf.setText(jtf.getText() + e.getActionCommand());
			} else if (comm.equals("B")) {// 匹配退格键
				jtf.setText(jtf.getText().substring(0,
						jtf.getText().length() - 1));
			} else if (comm.equals("C")) {// 匹配清除键
				jtf.setText("");
			} else if (comm.equals("+/-")) {// 匹配正负号
				double d = Double.parseDouble(jtf.getText());
				if (d < 0) {
					jtf.setText(String.valueOf(Math.abs(d)));// 如果文本框中数字小于0,取其绝对值
				} else {
					jtf.setText("-" + jtf.getText());
				}
			} else if (comm.equals("1/x")) {
				jtf.setText(String.valueOf(1 / Double
						.parseDouble(jtf.getText())));// 求倒数
			} else if (comm.equals("+")) {
				value = Double.parseDouble(jtf.getText());// 取的加数
				control = 1;
				jtf.setText("");// 清空文本显示数字
			} else if (comm.equals("-")) {
				value = Double.parseDouble(jtf.getText());// 取的减数
				control = 2;
				jtf.setText("");// 清空文本显示数字
			} else if (comm.equals("*")) {
				value = Double.parseDouble(jtf.getText());
				control = 3;
				jtf.setText("");// 清空文本显示数字
			} else if (comm.equals("/")) {
				value = Double.parseDouble(jtf.getText());// 取的除数
				control = 4;
				jtf.setText("");// 清空文本显示数字
			} else if (comm.equals("=")) {
				switch (control) {// 判断+,-,*,/
				case 1:
					value += Double.parseDouble(jtf.getText());// 求和
					// System.out.println(value);
					jtf.setText(String.valueOf(value));// 显示结果
					break;
				case 2:
					value -= Double.parseDouble(jtf.getText());// 求差
					jtf.setText(String.valueOf(value));
					break;
				case 3:
					value *= Double.parseDouble(jtf.getText());// 求积
					jtf.setText(String.valueOf(value));
					break;
				case 4:
					value /= Double.parseDouble(jtf.getText());// 求商
					jtf.setText(String.valueOf(value));
					break;
				}
			} else if (comm.equals(".")) {
				if (!jtf.getText().matches("^\\d*[.]\\d*$")) {// 判断文本显示区域是否含有小数点
					jtf.setText(jtf.getText() + ".");
				}
			}
		}
	}

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -