教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

北邮JAVA第三次作业科学计算器(附源代码)(2)

来源:网络收集 时间:2026-05-16
导读: } 4. 窗体的构造函数 /** * Constructor */ public MyFrame() { initialize(); } 5. initialize()函数里摆放控件,并设置事件的处理 1) Jframe frame = new JFrame(\计算器\); frame.setResizable(false); frame.se

}

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字,全部文档内容请下载后查看。喜欢就下载吧 ……
北邮JAVA第三次作业科学计算器(附源代码)(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/598714.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)