java实现完整的简易计算器

java实现完整的简易计算器

题目

在上一个实验(实验三)的第1题中,我们设计了一个简易计算器的界面。但仅仅要求设计出其界面,而没有要求进行事件处理。在本次实验中,请实现其事件处理。使得程序运行之后,当输入两个小数作为运算数后,点击“相加”或者“相减”按钮,两数相加或相减的结果就会显示在“运算结果”框中。如果点击“全部清零”按钮,那么两个运算数输入框和运算结果框中就会完全被清空。

设计思路

编写一个类实现界面设计,在主类中编写一个内部类,用于继承ActionListener,实现事件处理。根据题目提示,在这个类中首先定于我们需要的各种组件和容器。然后编写构造方法,在构造方法中对这些容器和组件进行初始化和界面的搭建。由于界面之上而下的分为七个格,所以我底层容器使用格式布局7行1列,另外定义七个中间层容器来存放相应格的组件。在构造方法中,我们加上按键的监听器。

代码

package arithmeticApp;
import javax.swing.*;
import java.awt.*;
import java.awt.ActiveEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AMApp {
          
   
	JFrame jf=null;
	JPanel jp1=null;
	JPanel jp2=null;
	JPanel jp3=null;
	JPanel jp4=null;
	JPanel jp5=null;
	JPanel jp6=null;
	
	JButton jb1=null;
	JButton jb2=null;
	JButton jb3=null;
	JTextField jtx1=null;
	JTextField jtx2=null;
	JTextField jtx3=null;
	JLabel jla1=null;
	JLabel jla2=null;
	JLabel jla3=null;
	JLabel jla4=null;
	public AMApp() {
          
                   //构造函数
		jf=new JFrame("简易计算器");
		jf.setLayout(new GridLayout(7,1));
		jf.setSize(350,500);
		jp1=new JPanel();
		jp2=new JPanel();
		jp3=new JPanel();
		jp4=new JPanel();
		jp5=new JPanel();
		jp6=new JPanel();
		
		jb1=new JButton("相加");
		jb1.setFont(new Font("隶书",Font.BOLD,15));
		jb1.addActionListener(new MyEvent());
		jb2=new JButton("相减");
		jb2.setFont(new Font("隶书",Font.BOLD,15));
		jb2.addActionListener(new MyEvent());
		jb3=new JButton("全部清零");
		jb3.setFont(new Font("隶书",Font.BOLD,15));
		jb3.addActionListener(new MyEvent());
		jtx1=new JTextField(10);
		jtx2=new JTextField(10);
		jtx3=new JTextField(10);
		
		jla1=new JLabel("简易计算器");
		jla1.setFont(new Font("隶书",Font.BOLD,20));
		jla2=new JLabel("运算数一");
		jla2.setFont(new Font("隶书",Font.BOLD,15));
		jla3=new JLabel("运算数二");
		jla3.setFont(new Font("隶书",Font.BOLD,15));
		jla4=new JLabel("运算结果");
		jla4.setFont(new Font("隶书",Font.BOLD,15));
		
		jf.getContentPane().add(jp1);
		jf.getContentPane().add(jp2);
		jf.getContentPane().add(jp3);
		jf.getContentPane().add(jp4);
		jf.getContentPane().add(jp5);
		jf.getContentPane().add(jp6);
		jp1.add(jla1);
		jp2.add(jla2);
		jp2.add(jtx1);
		jp3.add(jla3);
		jp3.add(jtx2);
		jp4.add(jla4);
		jp4.add(jtx3);
		jp5.add(jb1);
		jp5.add(jb2);
		jp6.add(jb3);
		jf.setVisible(true);
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	public class MyEvent implements ActionListener {
          
   
		String a="相加";
		String b="相减";
		String c="全部清零";
		public void actionPerformed(ActionEvent e) {
          
   
			if(e.getActionCommand()==a) {
          
   
				String str1=jtx1.getText();
				String str2=jtx2.getText();
				float x=Float.parseFloat(str1);
				float y=Float.parseFloat(str2);
				float sum=x+y;
				String s=String.valueOf(sum);
				jtx3.setText(s);
			}else if(e.getActionCommand()==b) {
          
   
				String str1=jtx1.getText();
				String str2=jtx2.getText();
				float x=Float.parseFloat(str1);
				float y=Float.parseFloat(str2);
				float sum=x-y;
				String s=String.valueOf(sum);
				jtx3.setText(s);
			}else if(e.getActionCommand()==c) {
          
   
				jtx1.setText("");
				jtx2.setText("");
				jtx3.setText("");
			}
		}
	}
	public static void main(String []args) {
          
   
		AMApp wind=new AMApp();
	}
}

测试

1.相加

2.相减

3.全部清零

经验分享 程序员 微信小程序 职场和发展