package hyw.calculator;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
final String JButtonName[] = { "7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "×", ".", "0", "=", "÷" };
Font font = new Font("宋体", Font.PLAIN, 17);
JPanel p1, p2;
JButton Jb[] = new JButton[JButtonName.length];// 创建按钮数组
JButton ce;
JTextField tf;
public Calculator() {
for (int i = 0; i < JButtonName.length; i++) {
Jb[i] = new JButton("" + JButtonName[i]);//实例化并声明按钮名称
Jb[i].setFont(font);// 设置字体
Jb[i].setContentAreaFilled(false);// 设置按钮透明
Jb[i].addActionListener(this);
}
p1 = new JPanel(new GridLayout(4, 4));// 设置成4X4的布 局
for (int i = 0; i < JButtonName.length; i++) {
p1.add(Jb[i]);
}
p2 = new JPanel(new BorderLayout());
ce = new JButton("CE");
ce.setContentAreaFilled(false);
ce.addActionListener(this);
tf = new JTextField("0");
tf.setFont(font);
p2.add(ce, "East");
p2.add(tf, "Center");
this.add(p2, BorderLayout.NORTH);
this.add(p1, BorderLayout.CENTER);
this.setVisible(true);
this.setTitle("简易计算器");
//使窗口居中
int windowsWedth = 280;
int windowsHeight = 300;
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
this.setBounds((width - windowsWedth) / 2,
(height - windowsHeight) / 2, windowsWedth, windowsHeight);
}
public void actionPerformed(ActionEvent e) {
String label = e.getActionCommand();// 返回的是按的按钮名
if (e.getSource() == ce)
Reset();
else if ("0123456789.".indexOf(label) >= 0)// 查找按钮是否为数字和"."
RunNumber(label);
else
RunOperator(label);
}
// 是否是第一次按数字
boolean isFirstDigit = true;
public void RunNumber(String key) {
if (isFirstDigit)
tf.setText(key);// 如果是第一次按数字,覆盖文本框的内容
else if ((key.equals(".")) && (tf.getText().indexOf(".") < 0))// 按了点并且文本框中之前没有点
tf.setText(tf.getText() + ".");//如果按了多个".",只显示一个
else if (!key.equals("."))
tf.setText(tf.getText() + key);// 叠加显示在文本框中
isFirstDigit = false;
}
double number = 0.0;
String operator = "=";
public void Reset() {// 重置
tf.setText("0");
isFirstDigit = true;
operator = "=";
}
public void RunOperator(String key) {
if (operator.equals("+"))
number += Double.valueOf(tf.getText());// 将文本框中的字符串强制转化为Double类型
else if (operator.equals("-"))
number -= Double.valueOf(tf.getText());
else if (operator.equals("×"))
number *= Double.valueOf(tf.getText());
else if (operator.equals("÷")) {
number /= Double.valueOf(tf.getText());
} else if (operator.equals("="))
number = Double.valueOf(tf.getText());
tf.setText(String.valueOf(number));
operator = key;
isFirstDigit = true;
}
public static void main(String[] args) {
new Calculator();
}
}
最近下载更多
ywwwww28 LV1
9月10日
jixian1552 LV1
3月26日
gdgdghd LV1
2023年9月28日
微信网友_6533174388953088 LV1
2023年6月24日
ja12121 LV2
2023年6月17日
fss随便取的 LV1
2023年6月16日
另类清晨 LV8
2023年6月7日
Blithe1 LV1
2023年6月2日
2694809556 LV2
2022年12月22日
zhxlll LV1
2022年12月21日

最近浏览
