Java实验--超级简单的计算器

学了Java的GUI后,做了个super简单的计算器,只能做加法。(萌新日常记录,大佬发现有什么问题欢迎评论区留言)
都是很简单的知识,其中主要涉及GridLayout布局的应用、添加监听器、两个控件、还有响应事件、内部类…
详细代码如下:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@SuppressWarnings("serial")
public class CalculatorInWindow extends JFrame {
	JButton button; 
	JButton button1;
	JTextField text1;
	JTextField text2;
	JTextArea text3;
	ReaderListen listener;
		
	public CalculatorInWindow() {
		init();
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	void init() {
		setLayout(new GridLayout(3,3));      //使用GridLayout布局生成3x3的网格状布局
		listener=new ReaderListen();
		add(new JLabel("加数1"));            //添加便签
		text1=new JTextField();       
		text1.addActionListener(listener);    //添加监听器监听texe1
		add(new JScrollPane(text1));        //在文本框添加滚动条,并将文本框添加到窗口
		add(new JLabel(""));            //添加空白的便签,填充右边空白区域
		add(new JLabel("加数2"));    
		text2=new JTextField();
		text2.addActionListener(listener);   //添加监听器监听texe2
		add(new JScrollPane(text2));
		add(new JLabel(""));
		button=new JButton("求和");
		button.addActionListener(listener);   //添加监听器监听button
		add(button);
		text3=new JTextArea();
		add(new JScrollPane(text3));
		button1=new JButton("清空");
		button1.addActionListener(listener);   //添加监听器监听button1
		add(button1);
	}
	class ReaderListen implements ActionListener{      //内部类实现事件处理简化过程
		public void actionPerformed(ActionEvent e) {
				//由于上面只用一个监听器监听所有的控件,所以接下来进行监听器监听到的事件进行分类处理
			//利用getSource()函数获取事件源对象的引用,然后用equals()函数判断是否与将要处理的对象相等。
			if(e.getSource().equals(text1)){    
				text1.transferFocus();    //对文本框1回车进行光标下移处理
			}
			else if(e.getSource().equals(button)||e.getSource().equals(text2)) {  //对文本框2和求和按钮事件进行处理
				String str1=text1.getText();   //获取文本框1和2的内容
				String str2=text2.getText();
				try {   //对于在文本框1和文本框2输入非数字进行异常处理
				double x1 = Double.parseDouble(str1);   //对文本框1和文本框2数字以字符串的形式转换成double类型
				double x2 = Double.parseDouble(str2);
				text3.setText(null);                   //将文本框3置空,防止进行多次求和按钮后在文本框3的结果叠加。
				text3.append(String.valueOf(x1+x2));
				}catch (Exception e1) {                            //对输入非数字按求和进行提醒
		                JOptionPane.showMessageDialog(null, "没输入数字或者输入的数字中含有非法字符,请重新输入", "数据错误", JOptionPane.ERROR_MESSAGE);
		         }
			}
			else if(e.getSource().equals(button1)) {                               //对清空按钮实现置空
				text1.setText(null);
				text2.setText(null);
				text3.setText(null);
			}
		}
	}
}
public class Text {
	public static void main(String args[]) {
	CalculatorInWindow cal=new CalculatorInWindow();
	cal.setBounds(300,350,310,260);   //设置窗口大小和初始位置
	cal.setTitle("计算器");    //设置窗口标题
	}
}

文中已经有大量的说明,我就不再这唠叨了。
至于结果嘛,运行就知道啦(运行后别回来骂我鸭
(由于个别原因,代码中用了大量的注释请不要模仿

猜你喜欢

转载自blog.csdn.net/weixin_43644231/article/details/90739591
今日推荐