您的位置:首页 > 编程语言 > Java开发

java项目实战-计算器(页面布局学习 添加事件)

2014-09-21 23:32 585 查看
package com.ten.jiauanqi;

import java.awt.*;
import java.awt.event.*;

public class Calculator extends WindowAdapter{
	//定义3个面板
	Panel p1=new Panel();
	Panel p2=new Panel();
	Panel p3=new Panel();
	TextField txt;//创建文本框对象
	private Button[] b=new Button[17];//创建按钮数组
	private String ss[]={"7","8","9","+","4","5","6","-","1","2","3","*","清空","0","=","/","关闭"};
	static double a;//创建double类型变量
	static String s,str;//创建String类型变量
	
	public static void main(String args[])
	{
		(new Calculator()).frame();
	}
	
	public void frame()
	{
		Frame fm=new Frame("计算器");
		for(int i=0;i<=16;i++){
			b[i] = new Button(ss[i]);//为按钮数组赋值
		}
		
		for(int i=0;i<=15;i++)
		{
			p2.add(b[i]);
		}
		
		b[16].setBackground(Color.yellow);//设置按钮背景色为***
		//创建和设置文本框
		txt= new TextField(15);
		txt.setEditable(false);
		
		for(int i=0;i<=16;i++)
		{
			b[i].addActionListener(new buttonlistener());//为按钮添加监听器
		}
		
		b[16].addActionListener(new close());//为按钮添加关闭监听器
		
		fm.addWindowListener(this);
		fm.setBackground(Color.red);
		p1.setLayout(new BorderLayout());
		p1.add(txt,"North");
		p2.setLayout(new GridLayout(4,4));
		p3.setLayout(new BorderLayout());
		p3.add(b[16]);
		
		//添加各个面板到窗口上
		fm.add(p1,"North");
		fm.add(p2,"Center");
		fm.add(p3,"South");
		fm.pack();
		fm.setVisible(true);
	}
	
	public void windowClosing(WindowEvent e)
	{
		System.exit(0);
	}

	//编写事件监听器
	class buttonlistener implements ActionListener{
		public void actionPerformed(ActionEvent e)
		{
			Button btn=(Button)e.getSource();//获取事件按钮
			if(btn.getLabel()=="=")
			{
				jisuan();
				str=String.valueOf(a);
				txt.setText(str);
				s="";				
			}else if(btn.getLabel()=="+")
			{
				jisuan();
				txt.setText("");
				s="+";
			}else if(btn.getLabel()=="-")
			{
				jisuan();
				txt.setText("");
				s="-";
			}else if(btn.getLabel()=="*")
			{
				jisuan();
				txt.setText("");
				s="*";
			}else if(btn.getLabel()=="/")
			{
				jisuan();
				txt.setText("");
				s="/";
			}else{
				txt.setText(txt.getText()+btn.getLabel());
				if(btn.getLabel()=="清空")
					txt.setText("");
			}
		}
		
		public void jisuan()
		{
			if(s=="+")
			{
				a+=Double.parseDouble(txt.getText());
			}else if(s=="-")
			{
				a-=Double.parseDouble(txt.getText());
			}else if(s=="*")
			{
				a*=Double.parseDouble(txt.getText());
			}else if(s=="/")
			{
				a/=Double.parseDouble(txt.getText());
			}else{
				a=Double.parseDouble(txt.getText());
			}
		}
	}
	
	class close implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			System.exit(0);
		}
	}

}


效果图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐