简易粉红计算器
package shixun.zuizhong;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Calculator {
static int status = 0; //状态
static Double num1,num2; //num1 前一次 num2 后一次
static String fuhao;
static int num_fu = 0;
static int spo_status = 0,spo_count=1; //点 的状态 点后数字个数
public static void main(String[] args) {
//窗口
JFrame jFrame = new JFrame("简单计算器");
jFrame.setSize(500,600);
jFrame.setVisible(true);
//创建按钮0-9
JButton[] jButtons = new JButton[10];
int index=0;
for (int i = 0; i <=9; i++) {
jButtons[i] = new JButton(i+"");
jButtons[i].setBackground(Color.pink);
}
//创建按钮 加减乘除 小数点 等于
JButton add_btn = new JButton("+");add_btn.setBackground(Color.pink);
JButton sub_btn = new JButton("-");sub_btn.setBackground(Color.pink);
JButton mul_btn = new JButton("X");mul_btn.setBackground(Color.pink);
JButton div_btn = new JButton("/");div_btn.setBackground(Color.pink);
JButton poi_btn = new JButton(".");poi_btn.setBackground(Color.pink);
JButton equ_btn = new JButton("=");equ_btn.setBackground(Color.pink);
//内容面板 放按钮
JPanel jPanel = new JPanel();jPanel.setBackground(Color.pink);
jPanel.setLayout(new GridLayout(4,4,15,15));
index=1;
while (index<=9){
jPanel.add(jButtons[index]);
switch (index){
case 3:jPanel.add(add_btn);break;
case 6:jPanel.add(sub_btn);break;
case 9:jPanel.add(mul_btn);break;
}
index++;
}
jPanel.add(poi_btn);
jPanel.add(jButtons[0]);
jPanel.add(div_btn);
jPanel.add(equ_btn);
//内容面板2
JPanel jPanel1 = new JPanel();jPanel1.setBackground(Color.pink);
JButton clean_btn = new JButton("清空");clean_btn.setBackground(Color.pink);
JTextArea jTextArea = new JTextArea("0", 5, 30);jTextArea.setBackground(Color.pink);
jPanel1.add(jTextArea);
jPanel1.add(clean_btn);
//添加到jframe
jFrame.add("North",jPanel1);
jFrame.add(jPanel);
//关闭同时推出程序
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//事件
//清空事件
ActionListener actionListener_clear = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jTextArea.setText("0");
status = 0;
num_fu = 0;
spo_status = 0;
spo_count = 1;
}
};
//数字事件
ActionListener actionListener_num = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton jtext =(JButton)e.getSource();
if(spo_status == 1){
spo_count*=10;
}
if (num_fu==0){
if (status == 0){
num1 = Double.parseDouble(jtext.getText());
num1 /= spo_count;
status = 1;
jTextArea.setText(String.valueOf(num1));
}else {
num1=num1*10+Double.parseDouble(jtext.getText());
num1 /= spo_count;
jTextArea.setText(String.valueOf(num1));
}
}else{
if (status == 0){
num2 = Double.parseDouble(jtext.getText());
num2 /= spo_count;
status = 1;
jTextArea.setText(String.valueOf(num2));
}else {
num2=num2*10+Double.parseDouble(jtext.getText());
num2 /= spo_count;
jTextArea.setText(String.valueOf(num2));
}
}
}
};
//符号事件
ActionListener actionListener_fuhao = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton jtext =(JButton)e.getSource();
String text = jtext.getText();
fuhao = text;
status = 0;
num_fu = 1;
spo_status = 0;
spo_count = 1;
jTextArea.setText(text);
}
};
//计算
ActionListener actionListener_cal = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(num1);
System.out.println(num2);
Double number=null;
switch (fuhao){
case "+":number=num1+num2;break;
case "-":number=num1-num2;break;
case "X":number=num1*num2;break;
case "/":number=num1/num2;break;
default: jTextArea.setText("0");
};
System.out.println(number);
jTextArea.setText(String.valueOf(number));
status = 0;
spo_status = 0;
spo_count = 1;
}
};
//小数点状态
ActionListener actionListener_spo = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
spo_status = 1;
}
};
//注册数字
index=0;
while (index<=9){
jButtons[index].addActionListener(actionListener_num);
index++;
}
//注册符号
add_btn.addActionListener(actionListener_fuhao);
sub_btn.addActionListener(actionListener_fuhao);
mul_btn.addActionListener(actionListener_fuhao);
div_btn.addActionListener(actionListener_fuhao);
//注册等于
equ_btn.addActionListener(actionListener_cal);
//注册清空
clean_btn.addActionListener(actionListener_clear);
//主次小数点
poi_btn.addActionListener(actionListener_spo);
}
}