史上最捞的小学生计算器

需要解决:
1、界面文本框每次输入的内容不被覆盖
2、将文本框的数学算式字符串转换为double类型计算并输出

package com.softeem.counter;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import javax.script.ScriptException;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JTextField;
public class UI extends JFrame implements ActionListener {	
String num = "";	
private JButton btn0;	
private JButton btn1;	
private JButton btn2;
private JButton btn3;
private JButton btn4;	
private JButton btn5;	
private JButton btn6;	
private JButton btn7;	
private JButton btn8;	
private JButton btn9;	
private JButton btnAdd;// 加	
private JButton btnMinus;// 减	
private JButton btnRide;// 乘	
private JButton btnDivide;// 除	
private JButton btnPoint;// 点	private JButton btnIs;// 等于	
private JTextField result;// 计算结果	private JButton btnGL;// 归零	
public UI() {		
// 设置窗口标题		
setTitle("小学生计算器");		
// 设置窗体大小		
setSize(360, 420);		
// 设置当前界面显示的相对位置,设置为null时屏幕会水平居中		
setLocationRelativeTo(null);		
// 设置禁止窗口大小修改		setResizable(false);		
// 显示当前窗体总是在最顶端		setAlwaysOnTop(true);		
// 设置当窗体关闭时的默认操作		setDefaultCloseOperation(EXIT_ON_CLOSE);		// 初始化组件		
init();		
// 显示窗体		
setVisible(true);	
}	
public void init() {		
// 设置界面中的布局方式(流式布局)		setLayout(null);		
btn0 = new JButton("0");		btn0.setBounds(20, 305, 125, 70);		
btn1 = new JButton("1");		btn1.setBounds(20, 230, 60, 70);		
btn2 = new JButton("2");		btn2.setBounds(85, 230, 60, 70);		
btn3 = new JButton("3");		btn3.setBounds(150, 230, 60, 70);		
btn4 = new JButton("4");		btn4.setBounds(20, 155, 60, 70);		
btn5 = new JButton("5");		btn5.setBounds(85, 155, 60, 70);		
btn6 = new JButton("6");		btn6.setBounds(150, 155, 60, 70);		
btn7 = new JButton("7");		btn7.setBounds(20, 80, 60, 70);		
btn8 = new JButton("8");		btn8.setBounds(85, 80, 60, 70);		
btn9 = new JButton("9");		btn9.setBounds(150, 80, 60, 70);		btnAdd = new JButton("+");		btnAdd.setBounds(215, 80, 60, 70);		btnMinus = new JButton("-");		btnMinus.setBounds(280, 80, 60, 70);		btnRide = new JButton("×");		btnRide.setBounds(215, 155, 60, 70);		btnDivide = new JButton("÷");		btnDivide.setBounds(280, 155, 60, 70);		btnPoint = new JButton(".");		btnPoint.setBounds(150, 305, 60, 70);		btnIs = new JButton("=");		btnIs.setBounds(215, 305, 125, 70);		btnGL = new JButton("C");		btnGL.setBounds(215, 230, 125, 70);		result = new JTextField();		result.setBounds(20, 20, 320, 50);		
// 将控件加入窗体中		
add(btn0);		
add(btn1);		
add(btn2);		
add(btn3);		
add(btn4);		
add(btn5);		
add(btn6);		
add(btn7);		
add(btn8);		
add(btn9);		
add(btnAdd);		
add(btnMinus);		
add(btnRide);		
add(btnDivide);		
add(result);		
add(btnPoint);		
add(btnIs);		
add(btnGL);		
// 为按钮绑定操作指令	
	
btn0.setActionCommand("0");	btn1.setActionCommand("1");		btn2.setActionCommand("2");		btn3.setActionCommand("3");		btn4.setActionCommand("4");		btn5.setActionCommand("5");		btn6.setActionCommand("6");		btn7.setActionCommand("7");		btn8.setActionCommand("8");		btn9.setActionCommand("9");		btnPoint.setActionCommand(".");		btnAdd.setActionCommand("+");		btnMinus.setActionCommand("-");		btnRide.setActionCommand("*");		btnDivide.setActionCommand("/");		btnIs.setActionCommand("=");		btnGL.setActionCommand("C");	
	
// 为按钮绑定事件		
btn0.addActionListener(this);		btn1.addActionListener(this);		btn2.addActionListener(this);		btn3.addActionListener(this);		btn4.addActionListener(this);		btn5.addActionListener(this);		btn6.addActionListener(this);		btn7.addActionListener(this);		btn8.addActionListener(this);		btn9.addActionListener(this);		btnPoint.addActionListener(this);		btnAdd.addActionListener(this);		btnMinus.addActionListener(this);		btnRide.addActionListener(this);		btnDivide.addActionListener(this);		btnIs.addActionListener(this);		btnGL.addActionListener(this);	
}	
@Override	
public void actionPerformed(ActionEvent e) {		String s = e.getActionCommand();
//result.setText("0");		
		switch (s) {		
		case "0":			
		num += s;			result.setText(num);			
		break;		
		case "1":			
		num += s;			result.setText(num);			
		break;		
		case "2":			
		num += s;			result.setText(num);			
		break;		
		case "3":			
		num += s;			result.setText(num);			
		break;		
		case "4":			
		num += s;			result.setText(num);			
		break;		
		case "5":			
		num += s;			result.setText(num);			
		break;		
		case "6":			
		num += s;			result.setText(num);			
		break;		
		case "7":			
		num += s;			result.setText(num);			
		break;		
		case "8":			
		num += s;			result.setText(num);			
		break;		
		case "9":			
		num += s;			result.setText(num);			
		break;		
		case "+":			
		num += s;			result.setText(num);			
		break;		
		case "-":			
		num += s;			result.setText(num);			
		break;		
		case "*":			
		num += s;			result.setText(num);			
		break;		
		case "/":			
		num += s;			result.setText(num);			
		break;		
		case ".":			
		num += s;			result.setText(num);			
		break;		
		case "C":			
		num = "";			result.setText(num);			
		break;		
		case "=":			
		ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");			
		String text = result.getText();			Double d;			
		try {				
		d = (Double) se.eval(text);				String str = d.toString();				result.setText(str);			
		} catch(ScriptException e1){
		e1.printStackTrace();break;
	}
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值