北邮JAVA第三次作业科学计算器(附源代码)(2)
}
4. 窗体的构造函数
/**
* Constructor */
public MyFrame() { initialize(); }
5. initialize()函数里摆放控件,并设置事件的处理
1)
Jframe
frame = new JFrame(\计算器\); frame.setResizable(false);
frame.setBounds(100, 100, 371+60, 371);
frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE); frame.getContentPane().setLayout(null);
2)
文本框
result = new JTextField();
result.setFont(new Font(\, Font.PLAIN, 15)); result.setHorizontalAlignment(SwingConstants.RIGHT); result.setBounds(29, 28, 308+60, 50); frame.getContentPane().add(result); result.setColumns(10); result.setText(txt);
3) 数字按钮,用0举例,其他都一样
bt_0 = new JButton(\);
bt_0.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { numBtnAction(\); //按钮被按下时触发的事件,在后面写了 } });
bt_0.setBounds(99, 273, 50, 50); frame.getContentPane().add(bt_0);
4) “=”按钮
bt_equal = new JButton(\);
bt_equal.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(opflag == true){
num2 = Double.parseDouble(num_txt); //如果此时opflag为true的话,证明已经输入运算符,这时候刚输入的数为num2,num1和num2进行运算 big_num2 = new BigDecimal(num_txt); calc(op); }
result.setText(subZeroAndDot(Double.toString(big_num1.doubleValue()))); //显示结果。结果存入num1
num_txt = subZeroAndDot(Double.toString(big_num1.doubleValue())); }
6
});
5) +、-、*、/和幂方按钮,以+举例,其他都一样
bt_plus = new JButton(\);
bt_plus.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { opBtnAction(\); } });
6) 开方,lg, ln按钮,以开方举例,其他都一样
bt_sqrt = new JButton(\);
bt_sqrt.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (opflag == false) { //只对操作数为num1时有效 calc(\); txt = num_txt; result.setText(txt); } } });
7) ac和del的初始化,重点在事件处理上
bt_ac.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
result.setText(null); //全部运算标志和文本框置为初始状态 txt = null; numflag = opflag = false; num1 = num2 = 0;
big_num1 = big_num2 = new BigDecimal(Double.toString(0.0)); num_txt = \; } });
bt_del.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { if(num_txt != \ && num_txt.length() > 0) {
//通过截取字符串的方式回删一个字符
num_txt = num_txt.substring(0, num_txt.length() - 1); }
if(txt != null && txt.length() > 0) {
txt = result.getText(); //文本框的回删,且不能删除运算符
if (txt.charAt(txt.length()-1) == '+' || txt.charAt(txt.length()-1) == '-' || txt.charAt(txt.length()-1) == '*' || txt.charAt(txt.length()-1) == '/' || txt.charAt(txt.length()-1) == '^' ) {
}else{
txt = txt.substring(0, txt.length() - 1); }
result.setText(txt); } } });
6. 数字键盘事件处理函数
/**
* 数字键盘里的按键按下后触发的事件。 *
* @param num 传入字符串形式的数字 * * */
7
private void numBtnAction(String num) {
numflag = true; //只要输入一个数,则把numflag置为true,表示已有数字输入
num_txt += num; //把输入的数加入到最终要转换成都double运算的字符串
txt = result.getText() + num; //加到txt,使输入的数显示到文本框中。 result.setText(txt); }
7. 运算符处理的函数
/**
* 运算符按键触发的动作 *
* @param operator 点击的运算符 * * */
private void opBtnAction(String operator) {
if(opflag == false && num_txt != \) { //进行判断,如果opflag为false,则表示还没输入运算符,
num1 = Double.parseDouble(num_txt); //这个时候把num_txt转换成double赋给num1。 big_num1 = new BigDecimal(num_txt); }
if(opflag == true && num_txt != \){
num2 = Double.parseDouble(num_txt); //如果opflag为true,表示第一个数输入完毕,且已输入相应的运算符,这个时候是在输入第二个要参与运算的数,则加到num2 big_num2 = new BigDecimal(num_txt);
calc(op); //先计算两数结果,赋给num1,num2置为0,以便后面多层混合运算使用。 }
numflag = false; //numflag置为0,表示当前需要输入数进行运算 opflag = true; //opflag置为true,表示当前已输入一个或多个操作数。
op = operator; //把新输入的运算符赋给op
result.setText(subZeroAndDot(big_num1.toString()) + \ + operator + \\); //在文本框显示,正则表达式去多余的0
num_txt = \; //num_txt置为空,为了存储下一个操作数。 }
< …… 此处隐藏:1926字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [学前教育]MC9S12XS256RMV1 xs128芯片手册4
- [学前教育]安东尼语录经典语录
- [学前教育]e级gps控制测量技术设计书
- [学前教育]苏教版2022-2022学年八年级下学期期末
- [学前教育]装修公司推广 营销
- [学前教育]家政服务合同(完整版)
- [学前教育]湖北省2016届高三联考语文试题
- [学前教育]爱立信无涯学习系统LTE题库1-LTE基础知
- [学前教育]揭秘大众柴油车作弊软件原理
- [学前教育]人才流失原因及对策分析
- [学前教育]房屋建筑施工工程劳务分包合同
- [学前教育]国际贸易实务试卷A卷09.6
- [学前教育]校园废品回收活动计划方案书范文格
- [学前教育]电大成本会计试题及答案
- [学前教育]大学物理实验 华南理工出版社 绪论答案
- [学前教育]爱丁堡产后抑郁量表
- [学前教育]液压冲击的危害、产生原因与防止方法(
- [学前教育]学生工作总结高一学生期中考试总结_020
- [学前教育]人民医院医疗废物管理规章制度大全
- [学前教育]阳光维生素的巨大抗癌潜能阅读题答案.d
- 马云在云锋基金江苏论坛闭幕式的发言
- 试论小学体育教育中的心理健康教育-教
- 语文A版一年级下册《语文乐园一》教学
- 2021四川大学物理化学考研真题经验参考
- [人教A版]2015-2016学年高中数学 第二
- 终端网点销售返利协议书
- 江苏省2015年眼科学主治医师青光眼考试
- 2017年部编人教版八年级语文上册教案
- 十一中学七年级英语上册Unit7Howmuchar
- 以赛促教的创新性实验教学机制建设实践
- 平凉市崆峒区2015七年级下生物期末试题
- 琶洲(地块五)A、B塔楼1、2#塔吊基础
- 一级医院工作制度与人员岗位职责
- 2018北京西城区高三二模理科数学试题及
- 炒股密码线技术 - 图文
- 职高学生生涯发展辅导教案
- 语文人教版四年级上册8 世界地图引出的
- 最新最新人教版二年级上册全册数学教案
- 2017高考英语全国2卷精彩试题(有问题
- 普通心理学笔记




