使用javaswing编写计算器增加连续运算的功能
package Computer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
public class Const implements ActionListener {
JButton tx2=new JButton("C");
JTextField tx;
JButton bt;
public static void main(String[] args) {
Const ap = new Const();
ap.go();
}
void go() {
JFrame frame = new JFrame("小黄鸡计算器");//创建窗体
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗体
frame.setSize(300, 400);//窗体长度宽度
//
tx = new JTextField();
tx.setPreferredSize(new Dimension(300, 50));//根据布局自动调整
Image icon=Toolkit.getDefaultToolkit().getImage("D:\\计算器照片\\1.jpg");
frame.setIconImage(icon);
bt = new JButton();
frame.getContentPane().add(tx, BorderLayout.NORTH);//添加文本框在窗体北面
frame.getContentPane().add(bt);//添加按钮模板放窗体里面
//
JPanel jPanel = new JPanel();//创建一个模板
jPanel.setLayout(new GridLayout(4, 4));//创建按钮模板四行四列
/**
*/
String arry[] = {"7", "8", "9", "+",
"4", "5", "6", "-",
"1", "2", "3", "*",
"0", "=", "/",};//创建数组按钮
for (int i = 0; i < 15; i++) { //s使用for循环打印16个按钮
JButton bt = new JButton(arry[i]);
jPanel.add(bt);
bt.setForeground(Color.RED);
bt.setFont(new Font("微软雅黑", Font.BOLD, 16));
bt.addActionListener(this);
//创建清除按钮
this.tx2.setForeground(Color.BLACK);
jPanel.add(tx2);
tx2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
tx.setText("");//0
}
});
}
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
frame.add(jPanel); //把模板放入窗体
frame.setLocation((dim.width-300)/2,400);
frame.setVisible(true);//显示窗体
}
private String firstInput=null;//放入第一次输入的值
private String operator=null;//放入输入运算符
private String three=null; //第三次输入的值
@Override
public void actionPerformed(ActionEvent e) {
String clickStr=e.getActionCommand();
if ("0123456789".indexOf(clickStr)!=-1) {
tx.setText(tx.getText() + clickStr);//使输入的字符叠加
}else if (clickStr.matches("[\\+\\*/]{1}")){ //是否输入为+-*/
operator=clickStr; //记录运算符
firstInput = this.tx.getText();//记录第一次输入的值
this.tx.setText("");
}else if(clickStr.equals("=")){
Double a=Double.valueOf(firstInput);//第一次输入的值
Double b=Double.valueOf(this.tx.getText());//获取第二次输入的值
Double result=null;//运算结果
switch (operator){
case "+":
result=a+b;
break;
case "-":
result=a-b;
break;
case"/":
result=a/b;
break;
case "*":
result=a*b;
break;
}
this.tx.setText(result.toString());
}
}
}
实现连续运算的功能
用全局变量记录当前的结果,点击运算符的时候,将全局变量作为第一个运算值。