import java.awt.BorderLayout;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class calculator extends JFrame implements ActionListener
{
JTextField input = new JTextField(40);
String x;
int flag;
double num1, num2, result;
public calculator()//构造器
{
setTitle("计算器");
String[] buttonsName = {
"7", "8", "9", "*", "4", "5", "6", "/", "1", "2", "3", "+", "0", "clear", "=", "-"
};
x = "";//设置文本框初始为空
JPanel text = new JPanel();//创建文本框容器
input.addActionListener(this);//对文本框设置监听
text.add(input);//将文本框添加到容器
JPanel buttons = new JPanel();//创建按钮容器
buttons.setLayout(new GridLayout(4, 4, 5, 5));//设置为四行四列布局
JButton[] btn = new JButton[buttonsName.length];//创建按钮数组
//使用for循环创建16个按钮并给按钮添加监听并把按钮放入按钮容器
for (int i = 0; i < btn.length; i++)
{
btn[i] = new JButton(buttonsName[i]);//创建按钮对象并命名
btn[i].setBackground(Color.white);//设置按钮颜色
buttons.add(btn[i]);//把按钮放入按钮容器
btn[i].addActionListener(this);//添加监听
}
setLocationRelativeTo(null);//在屏幕中间显示(居中显示)
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗体关闭方式
add(text,BorderLayout.NORTH);//将text文本框添加到容器中间
add(buttons,BorderLayout.CENTER);//将按钮容器添加到容器下
setSize(600, 400);//设置容器大小及初始位置
setVisible(true);//设置可见
}
@Override
public void actionPerformed(ActionEvent e)
{
String action = e.getActionCommand();
if (action.charAt(0) >= '0' && action.charAt(0) <= '9')//将string类型转化为char类型并判断
{
x += action;
input.setText(x);
}
// 输入运算符号
if (action.equals("+"))
{
num1 = Double.parseDouble(input.getText());//使用包装类将文本类型数字转换为double型
x = "";
flag = 1;
}
if (action.equals("-"))
{
num1 = Double.parseDouble(input.getText());
x = "";
flag = 2;
}
if (action.equals("*"))
{
num1 = Double.parseDouble(input.getText());
x = "";
flag = 3;
}
if (action.equals("/"))
{
num1 = Double.parseDouble(input.getText());
x = "";
flag = 4;
}
// 输入等号
if (action.equals("="))
{
num2 = Double.parseDouble(input.getText().trim());
switch (flag)//用switch语句判断运算符号
{
case 1:
result = num1 + num2;
break;
case 2:
result = num1 - num2;
break;
case 3:
result = num1 * num2;
break;
case 4:
result = num1 / num2;
break;
}
input.setText(String.valueOf(result));
}
if (action.equals("clear"))
{
input.setText("");
x = "";
}
}
}
import calculator;
public class Test
{
public static void main(String[] args)
{
new calculator();
}
}