AWT:实现简单的java计算器

AWT练习:实现四则运算的计算器


一、前言

    1)这个计算器是基于java语言下图形界面AWT编写的。其实我认为写这个计算器,实现什么功能不重要,市场也不缺这个计算器,而是在于对AWT中三大布局的及画板的使用简单控件的操作使用。通过联系熟悉掌握AWT基础为深入学习打下基础。这个计算器功能也十分简单,空有其表。不过有兴趣的话可以继续添加功能完善操作等。

    2)使用平台:主要使用Myeclipse2014

    3)主要知识点:java 基础; awt+swing


二、功能实现及代码展示

    1)主要是layout布局的练习,对画板文本框的使用,以及控件button的事件的注册与监听。 因为功能也很简单,所以代码就简写到同一个类里了。实现了基本的四则运算。
    2)代码如下:

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;

public class JiSuanJi {
	
	private JFrame frame;                                  //声明相关布局面板
	private JPanel panelwest;
    private JPanel panelcenter;
    private JPanel paneleast;
    private TextField tf;
    
    private JButton buttonzero;                            //声明按钮控件
    private JButton buttondot;
    private JButton buttonequal;
    private JButton buttonplus,buttonminus,buttonmultiple,buttondevision,buttonsin,buttontozero;
    private JButton buttonone,buttontwo,buttonthree,buttonfour,buttonfive,buttonsix,buttonseven,buttoneight,buttonnine;
    

    private ButtonListener listener;                       //声明监听事件
	
	public static void main(String args[]){
		new JiSuanJi();
	}

	public JiSuanJi(){
		
		initView();                                        //实例化相关对象
		
		setCenter();                                       //布局添加控件及相关控件处理
		setWest();
		setEast();
		
		addListener();                                     //设置监听
		
		setFrame();                                        //对 frame设置布局及显示处理
		
	}

	class ButtonListener implements ActionListener{
		int biaozhi=0;                                     //初始化相关变量
		double flag1=0,flag2=0,flag3=0;
		//@Override
		public void actionPerformed(ActionEvent e){
			//(1)通过  e.getSource(),获取点击事件的按钮来源,作出相应处理

			if(e.getSource()==buttondot){
				tf.setText("0.");
			}
			if(e.getSource()==buttontozero){
				tf.setText("");
			}
			if(e.getSource()==buttonzero){
				tf.setText(tf.getText()+"0");
				flag1=Double.parseDouble(tf.getText());
			}
			else if(e.getSource()==buttonone){
				tf.setText(tf.getText()+"1");//文本框显示1、2、3.。。
				flag1=Double.parseDouble(tf.getText());
			}
			else if(e.getSource()==buttontwo){
				tf.setText(tf.getText()+"2");
				flag1=Double.parseDouble(tf.getText());
			}
			else if(e.getSource()==buttonthree){
				tf.setText(tf.getText()+"3");
				flag1=Double.parseDouble(tf.getText());
			}
			else if(e.getSource()==buttonfour){
				tf.setText(tf.getText()+"4");
				flag1=Double.parseDouble(tf.getText());
			}
			else if(e.getSource()==buttonfive){
				tf.setText(tf.getText()+"5");
				flag1=Double.parseDouble(tf.getText());
			}
			
			else if(e.getSource()==buttonsix){
				tf.setText(tf.getText()+"6");
				flag1=Double.parseDouble(tf.getText());
			}
			else if(e.getSource()==buttonseven){
				tf.setText(tf.getText()+"7");
				flag1=Double.parseDouble(tf.getText());
			}
			else if(e.getSource()==buttoneight){
				tf.setText(tf.getText()+"8");
				flag1=Double.parseDouble(tf.getText());
			}
			else if(e.getSource()==buttonnine){
				tf.setText(tf.getText()+"9");
				flag1=Double.parseDouble(tf.getText());
			}
			if(e.getSource()==buttonplus){
				tf.setText("");
				flag2=flag1;
				biaozhi=0;
			}
			if(e.getSource()==buttonminus){
				tf.setText("");
				flag2=flag1;
				biaozhi=1;
			}
			if(e.getSource()==buttonmultiple){
				tf.setText("");
				flag2=flag1;
				biaozhi=2;
			}
			if(e.getSource()==buttondevision){
				tf.setText("");
				flag2=flag1;
				biaozhi=3;
			}
			if(e.getSource()==buttonsin){
				flag3=Math.sin(flag1);
				tf.setText(flag3+"");
			}
			if(e.getSource()==buttonequal){
				if(biaozhi==0){
					flag3=flag2+flag1;
				}
				if(biaozhi==1){
					flag3=flag2-flag1;
				}
				if(biaozhi==2){
					flag3=flag2*flag1;
				}
				if(biaozhi==3){
					flag3=flag2/flag1;
				}
				tf.setText(flag3+"");
			}
		}
	}
	
	private void initView(){
		
		/**
		 * 创建框架、小容器对象、按钮对象
		 */
		tf = new TextField(30);//初始化界面宽度
		frame = new JFrame("简易计算机");
		panelcenter = new JPanel();
		panelwest = new JPanel();
		paneleast = new JPanel();
		
		listener = new ButtonListener();                                    //实例化监听对象
	}
	
 	private void setCenter(){
 		
		//(1)初始化控件显示值
		buttonone=new JButton("1");
		buttontwo=new JButton("2");
		buttonthree=new JButton("3");
		buttonfour=new JButton("4");
		buttonfive=new JButton("5");
		buttonsix=new JButton("6");
		buttonseven=new JButton("7");
		buttoneight=new JButton("8");
		buttonnine=new JButton("9");
		
		//(2)设置布局样式
		panelcenter.setLayout(new GridLayout(3,3));//根据内容多少来布局
		
		//(3)中央布局添加控件按钮
		panelcenter.add(buttonone);
		panelcenter.add(buttontwo);
		panelcenter.add(buttonthree);
		panelcenter.add(buttonfour);
		panelcenter.add(buttonfive);
		panelcenter.add(buttonsix);
		panelcenter.add(buttonseven);
		panelcenter.add(buttoneight);
		panelcenter.add(buttonnine);
	}
	
    private void setEast(){
    	
    	//(1)设置控件显示符号
    	buttonplus=new JButton("+");
		buttonminus=new JButton("-");
		buttonmultiple=new JButton("*");
		buttondevision=new JButton("/");
		buttonsin=new JButton("sin");
		buttontozero=new JButton("清除");
		
		//(2)设置布局样式
		paneleast.setLayout(new GridLayout(3,2));
		
		//(3)右布局添加相应按钮控件
		paneleast.add(buttonplus);
		paneleast.add(buttonminus);
		paneleast.add(buttonmultiple);
		paneleast.add(buttondevision);
		paneleast.add(buttonsin);
		paneleast.add(buttontozero);
		
	}

    private void setWest(){
    	
    	//(1)初始化控件显示值
    	buttonzero=new JButton("0");
		buttondot=new JButton(".");
		buttonequal = new JButton("=");
		
		//(2)对这三个按钮设置布局
		panelwest.setLayout(new GridLayout(3,1));
		
		//(3)左边布局添加按钮控件,将三个按钮添加入布局
		panelwest.add(buttonzero);
		panelwest.add(buttondot);
		panelwest.add(buttonequal);
		
    }

    private void addListener(){
    	
    	//(1)对  1-9对应的按钮添加监听
    	buttonone.addActionListener(listener);
		buttontwo.addActionListener(listener);
		buttonthree.addActionListener(listener);
		buttonfour.addActionListener(listener);
		buttonfive.addActionListener(listener);
		buttonsix.addActionListener(listener);
		buttonseven.addActionListener(listener);
		buttoneight.addActionListener(listener);
		buttonnine.addActionListener(listener);
		
		//(2)对运算符对应的按钮添加监听
		buttonplus.addActionListener(listener);
		buttonminus.addActionListener(listener);
		buttonmultiple.addActionListener(listener);
		buttondevision.addActionListener(listener);
		buttonsin.addActionListener(listener);
		buttontozero.addActionListener(listener);
		
		//(3)对其与的符号对应的按钮监听
		buttonzero.addActionListener(listener);
		buttondot.addActionListener(listener);
		buttonequal.addActionListener(listener);
		
    }

    private void setFrame(){
    	
    	frame.setLayout(new BorderLayout());
		//将准备的不同方位的内容加入大框架
		frame.add(paneleast,"East");
		frame.add(tf,BorderLayout.NORTH);
		frame.add(panelwest,BorderLayout.WEST);
		frame.add(panelcenter,BorderLayout.CENTER);
		//设置颜色
		tf.setBackground(Color.green);
		frame.pack();
		//将框架展开
		frame.setLocation(500,500);
		//程序框架在屏幕的位置
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//退出进程,不加此句,关闭页面但程序进程仍在后台运行
		frame.setVisible(true);
		//一个图形界面默认都是不可见的,setVisible是把图形界面设置为可见
		
    }
}

代码测试可用。


三、演示与效果

    1)运行界面如下:


当然了图形界面大小位置可调,也可初始化其位置与大小。

    2)简单测试四则运算:11*12




    好像简单的不能再简单了。尴尬~~~这个计算器写下来重点是布局的联系与button的简单使用。


好的,下面是一个简单Java 计算器AWT 实现代码: ```java import java.awt.*; import java.awt.event.*; public class Calculator extends Frame implements ActionListener { private TextField textField; // 显示计算结果的文本框 private int num1 = 0; // 第一个操作数 private int num2 = 0; // 第二个操作数 private int result = 0; // 计算结果 private String operator; // 操作符 public Calculator() { super("Calculator"); setLayout(new BorderLayout()); // 添加文本框 textField = new TextField(); textField.setEditable(false); // 设置为不可编辑 add(textField, BorderLayout.NORTH); // 添加按钮面板 Panel buttonPanel = new Panel(new GridLayout(4, 4)); String[] buttonLabels = {"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "C", "0", "=", "/"}; for (String label : buttonLabels) { Button button = new Button(label); button.addActionListener(this); buttonPanel.add(button); } add(buttonPanel, BorderLayout.CENTER); // 设置窗口大小并显示 setSize(300, 300); setVisible(true); } // 处理按钮点击事件 public void actionPerformed(ActionEvent e) { String label = e.getActionCommand(); switch (label) { case "C": // 清空操作数和操作符 num1 = 0; num2 = 0; operator = null; textField.setText(""); break; case "+": case "-": case "*": case "/": operator = label; num1 = Integer.parseInt(textField.getText()); textField.setText(""); break; case "=": num2 = Integer.parseInt(textField.getText()); switch (operator) { case "+": result = num1 + num2; break; case "-": result = num1 - num2; break; case "*": result = num1 * num2; break; case "/": result = num1 / num2; break; } textField.setText(Integer.toString(result)); break; default: // 数字按钮 textField.setText(textField.getText() + label); break; } } public static void main(String[] args) { new Calculator(); } } ``` 这个计算器支持加、减、乘、除四个基本运算,以及清空操作。运行 `main` 方法即可启动窗口。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

niaonao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值