colorful的java计算器

colorful的java计算器
一个能实现简单加减乘除的简单计算器
讲解:使用super();与this();与方法的重载的简易代码。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Mycalutor extends JFrame{
	public double num1=0,num2=0;
	public int i=0;
	double result=0;
	public String bufferString ="";
	public String operString ="";
public final String[] KEYS = {"+","-","*","/","1","2","3","0","4","5","6","C","7","8","9","="};
private JButton key1[]= new JButton[KEYS.length];
private JTextField resultText =new JTextField("0",15);
public  Mycalutor() {//构造函数
	super();//初始化父类JFrame的方法
	init();//重载方法
	this.setTitle("我的超级拽酷计算器!!");//书上136页上JFrame的第四个方法
	this.setResizable(true);//不允许改变计算器窗口大小
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使用 System exit 方法退出应用程序。仅在应用程序中使用。用这个就不用注册窗口的监听器
	this.pack();//自动调节各个组件的大小;
}
public void init() {
	resultText.setHorizontalAlignment(JTextField.RIGHT);//设置文本框水平向左对齐
	resultText.setEditable(true);//是文本框不可调节
	resultText.setBackground(Color.green);//设置文本框背景为黄色
	JPanel keys = new JPanel();
	keys.setLayout(new GridLayout(4,4,3,3));//将按键的布局设置为4行4列,横竖间隔三个单位
	for(int i=0;i<16;i++) {
		key1[i] = new  JButton(KEYS[i]);
		keys.add(key1[i]);
		key1[i].setForeground(Color.ORANGE);
		key1[i].setVisible(true);
	}//利用for循环添加按键并设置按键颜色
	keys.setBackground(Color.pink);//让按键布局的背景为粉色
	JPanel panel2=new JPanel();
	panel2.add(resultText);
panel2.setBackground(Color.green);
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North",panel2);
getContentPane().add("South",keys);//将按键与文本框两个布局添加到一个布局里去,利用borderlayout的方法把文本框放到上边,按键放到下边
NumberAdapter Na= new NumberAdapter();
ResetAdapter RA =new ResetAdapter();
OperAdapter OA =new OperAdapter();//初始化三种功能的按钮
	 for (i = 0; i < 16; i++) {  
		 if(i==5||i==6||i==7||i==8||i==9||i==10||i ==13||i==14||i==4||i==12)
		            {key1[i].addActionListener(Na);  
		       }
		 else if(i==11) {
	key1[i].addActionListener(RA);
}
		 else if(i==0||i==2||i==3||i==1||i==15){
	key1[i].addActionListener(OA);
}//为每个按键添加监听器
}}
class NumberAdapter implements ActionListener{
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		JButton button = (JButton)e.getSource();
		if(bufferString.equals("0") && button.getLabel().equals("0")){
			//当第一个输入为0时,不进行操作
		}else{
			bufferString += button.getLabel();
			resultText.setText(bufferString);
		}
	}//处理数字类的按钮
}
class ResetAdapter implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		resultText.setText("0");
		num1 = 0;
		num2 = 0;
		result = 0;
		bufferString = "";
		operString = "";
	}
}//c的重置键
class OperAdapter implements ActionListener{
	public void actionPerformed(ActionEvent e) {
		JButton b = (JButton)e.getSource();
		if(b.getLabel().equals("+")){
			operString = "+";
			num1 = Integer.parseInt(	resultText.getText());
			resultText.setText("0");
			bufferString = "";
		} else if (b.getLabel().equals("-")){
			operString = "-";
			num1 = Integer.parseInt(	resultText.getText());
			resultText.setText("0");
			bufferString = "";
		} else if(b.getLabel().equals("*")){
			operString = "*";
			num1 = Integer.parseInt(	resultText.getText());
			resultText.setText("0");
			bufferString = "";
		} else if(b.getLabel().equals("/")){
			operString = "/";
			num1 = Integer.parseInt(	resultText.getText());
			resultText.setText("0");
			bufferString = "";
		} else{
			num2 = Integer.parseInt(	resultText.getText());
			if(operString == "+"){
				result = num1 + num2;
			} else if(operString == "-"){
				result = num1 - num2;
			} else if(operString == "*"){
				result = num1 * num2;
			} else if(operString == "/"){
				if(0 == num2){
					new JOptionPane().showMessageDialog(null, "除数不能为0!");
				}else{
					result = num1 / num2;
				}
			}
		
			bufferString = Double.toString(result);
			resultText.setText(bufferString);
		
			}
	}
	}//加减乘除按键的操作
};

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值