java实现简单的计算器

思路:定义一个主框架Frame,我们对原设计的草图进行划分,以方便后面的布局

 下面我们来对主框架进行划分


如图,我们将主框架划分为四个JPanel,其中panel1,2,3使用GridLayout布局,GridLayout(1,2),

对于panel4我们使用流式布局,主框架设置为FlowLayout,

 由此我们把主要的布局设计好了,接下来我们将个标签,文本框,按钮对应按钮按如上设计图依次放入各个panel中,忘了说了,我们还有对各个按钮注册事件监听器

 

接着我们就要在actionPerformed()函数中对事件源(e.getSource())方法中对相应的事件进行处理,我们以加法为列,我们的设计思路是:从数字一,数字二对应的文本框接收数据,由于使用JTextField的方法getText()返回的是一个String,所以我们要将其转化为十进制实数,所以我们使用了Double.parseDouble()函数将从文本框接收到的String转化为一个实数,数字一和数字二现在变成了实数,接着根据事件源不同就行对应不同的运算,接着结果继续转化为字符串(String.valueOf()函数),并且设置数字三对应的文本框的内容为相应的结果即:jt3.setText();结束。

  

 图例 :乘法运算处理

特别的,在做除法运算时我们要对第二个操作数进行零操作检查,如果除数为零,我们将数字三对应的文本区设置为”除数不能为零”提示用户,除数不能为0

 

图例:除数不能为零

程序运行结果:输出1,2

                       加法                   减法               乘法                         除法

   

 除数不能为0:


实现源码

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class MyCalc extends JFrame implements ActionListener {
    JFrame jf;
    
    JLabel jl1;
    JLabel jl2;
    JLabel jl3;
    
    JButton jb1;
    JButton jb2;
    JButton jb3;
    JButton jb4;
    
    JTextField jt1;
    JTextField jt2;
    JTextField jt3;
    JPanel jp1;
    JPanel jp2;
    JPanel jp3;
    JPanel jp4;
    Container con;
    
    public void go() {
    
    	//窗口设置
    	this.setLayout(new FlowLayout());
    	this.setTitle("计算");
    	this.setSize(150,200);
    	 
    	con=this.getContentPane();
    	//标签设置
    	jl1=new JLabel("数字一");
    	jl2=new JLabel("数字二");
    	jl3=new JLabel("数字三");
    	//按钮设置,及其注册事件监听
    	jb1=new JButton("+");
    	jb1.addActionListener(this);
    	jb2=new JButton("-");
    	jb2.addActionListener(this);
    	jb3=new JButton("*");
    	jb3.addActionListener(this);
    	jb4=new JButton("/");
    	jb4.addActionListener(this);
    	//添加到面板
    	jp1=new JPanel(new GridLayout(1,2));
    	jp2=new JPanel(new GridLayout(1,2));
    	jp3=new JPanel(new GridLayout(1,2));
    	jp4=new JPanel(new GridLayout(1,2));
    	//穿件文本框
    	jt1=new JTextField();
    	jt2=new JTextField();
    	jt3=new JTextField(); 
    	jp1.setVisible(true);
    	
    	jp1.add(jl1);
    	jp1.add(jt1);
    	con.add(jp1);
    	
    	jp2.add(jl2);
    	jp2.add(jt2);
    	con.add(jp2);
    	
    	jp3.add(jl3);
    	jp3.add(jt3); 
    	con.add(jp3);
    	
    	jp4.add(jb1);
    	jp4.add(jb2);
    	jp4.add(jb3);
    	jp4.add(jb4);
    	con.add(jp4);
    	
    	this.setVisible(true);
    	 	  	
    }
    public static void main(String [] args) {
   MyCalc a=  new MyCalc();
    
   a.go();
    
    }
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==jb1) {
		 jt3.setText(String.valueOf(Double.parseDouble(jt1.getText())+Double.parseDouble(jt2.getText())));
		}else if(e.getSource()==jb2) {
		 jt3.setText(String.valueOf(Double.parseDouble(jt1.getText())-Double.parseDouble(jt2.getText())));
		}else if(e.getSource()==jb3) {
	     jt3.setText(String.valueOf(Double.parseDouble(jt1.getText())*Double.parseDouble(jt2.getText())));
	}else {
		if(Double.parseDouble(jt2.getText())==0.0) {
		   jt3.setText("除数不能为零");
		}else
		 jt3.setText(String.valueOf(Double.parseDouble(jt1.getText())/Double.parseDouble(jt2.getText())));
	}
	 
	}
}

 

 



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值