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.全部清零
