package 课设;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class Calculator {
public JFrame frame; //窗口
public JTextField textField; //文本框
public JButton buttons[]; //按钮
public JPanel panel; //面板
public String buttonArr[] = {"%", "DEL", "C", "+", "7", "8", "9", "-", "4", "5", "6", "×", "1", "2", "3", "÷", "+/-", "0", ".", "="};//按钮上的字符
public String information = ""; //文本框里的信息
public String a, b, operate; //运算符前的字符,运算符后的字符,运算符
public double result1; //double类型计算结果
public String result2; //字符串类型结果
public void ChuShi() {
frame = new JFrame("好多Bug的计算器"); //创建窗口
textField = new JTextField(); //创建文本框
panel = new JPanel(); //创建面板
buttons = new JButton[buttonArr.length];//创建按钮
frame.setBounds(700, 188, 490, 580); //设置窗口的位置尺寸
textField.setBounds(10, 15, 465, 90); //文本框的位置尺寸
textField.setFont(new Font("宋体", Font.BOLD, 60));//设置文本框的字体:字体,粗细,大小
textField.setBackground(new Color(119, 136, 153));
panel.setBackground(new Color(135, 206, 250));
panel.setBounds(10, 130, 465, 400); //面板的位置尺寸
panel.setLayout(new GridLayout(5, 4, 5, 5)); //网格布局
frame.add(textField); //文本框添加在窗口里
frame.add(panel); //面板添加到窗口里
for (int i = 0; i < buttonArr.length; i++) {
buttons[i] = new JButton(buttonArr[i]); //创建按钮并赋值
panel.add(buttons[i]); //按钮添加到面板上
buttons[i].setFont(new Font("宋体", Font.BOLD, 35));
buttons[i].setBackground(new Color(135, 206, 235));
int index = i;
//监听
buttons[i].addMouseListener(new MouseAdapter() { //点击按钮时调用该方法
public void mouseClicked(MouseEvent e) { //鼠标按键上单击并释放时调用
input(buttons[index].getText()); //获取按钮上内容
}
});
}
frame.setResizable(false); //窗口大小调整 关闭
frame.setLayout(null); //设置布局
frame.setVisible(true); //设置窗口可视
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗体
}
public void input(String v) {
switch (v) {
case "1": {
information += "1";
textField.setText(information);
break;
}
case "2": {
information += "2";
textField.setText(information);
break;
}
case "3": {
information += "3";
textField.setText(information);
break;
}
case "4": {
information += "4";
textField.setText(information);
break;
}
case "5": {
information += "5";
textField.setText(information);
break;
}
case "6": {
information += "6";
textField.setText(information);
break;
}
case "7": {
information += "7";
textField.setText(information);
break;
}
case "8": {
information += "8";
textField.setText(information);
break;
}
case "9": {
information += "9";
textField.setText(information);
break;
}
case "0": {
information += "0";
textField.setText(information);
break;
}
case ".": {
information += ".";
textField.setText(information);
break;
}
case "C": {
information = "";
textField.setText(information);
break;
}
case "DEL": {
information = information.substring(0, information.length() - 1);
textField.setText(information);
break;
}
case "+/-": {
if (Double.parseDouble(information) > 0) {
information = "-" + information;
textField.setText(information);
} else if (Double.parseDouble(information) < 0) {
information = information.substring(1);
textField.setText(information);
}
break;
}
case "%": {
information = Double.parseDouble(information) / 100 + "";
textField.setText(information);
break;
}
case "+": {
information += "+";
operate = "+";
textField.setText(information);
break;
}
case "-": {
information += "-";
operate = "-";
textField.setText(information);
break;
}
case "×": {
information += "×";
operate = "×";
textField.setText(information);
break;
}
case "÷": {
information += "÷";
operate = "÷";
textField.setText(information);
break;
}
case "=": {
a = information.substring(0, information.indexOf(operate));//截取运算符之前的字符串数据
b = information.substring(information.indexOf(operate) + 1);//截取运算符之后的字符串数据
result();
textField.setText(result2);
information = result2;
}
}
}
public void result() {
switch (operate) {
case "+": {
result1 = Double.parseDouble(a) + Double.parseDouble(b);//字符串转化double以计算结果
result2 = String.valueOf(result1); //double转化字符串型setText
break;
}
case "-": {
result1 = Double.parseDouble(a) - Double.parseDouble(b);//字符串转化double以计算结果
result2 = String.valueOf(result1); //double转化字符串型setText
break;
}
case "×": {
result1 = Double.parseDouble(a) * Double.parseDouble(b);//字符串转化double以计算结果
result2 = String.valueOf(result1); //double转化字符串型setText
break;
}
case "÷": {
result1 = Double.parseDouble(a) / Double.parseDouble(b);//字符串转化double以计算结果
result2 = String.valueOf(result1); //double转化字符串型setText
break;
}
}
}
public static void main(String[] args) {
Calculator calculator = new Calculator();
calculator.ChuShi();
}
}
Java实现简易计算器
于 2021-10-27 20:27:28 首次发布