事件与数组总结_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 事件与数组总结

事件与数组总结

 2014/7/22 1:18:39  LucyWong  程序员俱乐部  我要评论(0)
  • 摘要:一、事件Java的事件和其他很多语言的事件非常相似。在上个学期,我学习了ActionScript3.0,一开始的时候,对于事件监听器这一类特别不理解。觉得“监听器”这个词特别陌生。随着深入的学习和了解,并进行了许多实践后,我渐渐地将程序与生活联系到了一起。在谍战片中充满了监听器的场景,我们不难想象:监听器进行监听的事件源,就是声波。事件,就是声音。当监听器监听到声音后,就启动了录制这功能。类似的,在AS3.0还有Java中,监听器(Listener)就是添加到事件源上的对象,绑定了对象的接口
  • 标签:事件 总结 数组

一、事件

??? Java的事件和其他很多语言的事件非常相似。在上个学期,我学习了ActionScript3.0,一开始的时候,对于事件监听器这一类特别不理解。觉得“监听器”这个词特别陌生。

??? 随着深入的学习和了解,并进行了许多实践后,我渐渐地将程序与生活联系到了一起。在谍战片中充满了监听器的场景,我们不难想象:监听器进行监听的事件源,就是声波。事件,就是声音。当监听器监听到声音后,就启动了录制这功能。类似的,在AS3.0还有Java中,监听器(Listener)就是添加到事件源上的对象,绑定了对象的接口。当监听器监听到像鼠标点击这一类事件时,就会调用相应的方法来实现程序功能。

???????下面我来简单介绍一下Java的事件机制。

?

【Java事件机制】
?1.事件源
Q:有哪些可以成为事件源?
A:所有的图形界面控件(容器,元素),你的动作发生在哪一个控件上,那么该控件就是事件源对象。
???

2.事件监听器方法
?? 就是用来监听不同的动作的发生,当相应监听器方法监听到动作后,会自动调用相应的事件接口或事件抽象类的对象进行处理。
?? addActionListener(ActionListener l)??? ??? ??? 监听器类似按钮控件的点击操作,类似输入框控件的回车操作
?? addMouseListener(MouseListener ml)??? ??? 监听鼠标的进入,离开,按下,释放和单击操作
?? addMouseMotionListener(MouseMotionList ll);??? ??????? 监听鼠标的拖动和移动操作
?? addKeyListener(KeyListener kl)??? ??? ??? ? ??? 监听键盘的按下和释放操作
???
3.事件接口或者事件抽象类
?? 事件接口或者事件抽象类就是当事件监听器方法监听到动作之后,会调用事件接口或者事件抽象类。我们常常需要定义一个类实现接口或者抽象类。

举个例子

class="java" name="code">/**
 * SortFrame,该类继承自JFrame
 * @author LucyWong
 *
 */
public class SortFrame extends javax.swing.JFrame{
	
	//创建SortListener类对象,将每次排序结果传过来
	SortListener sl = new SortListener();
	
	public static void main(String[] args) {
		SortFrame sf = new SortFrame();
		sf.initUI();
	}
	
	public void initUI(){
		//设置窗体属性
		this.setTitle("2048");
		this.setSize(800,600);
		//this.getContentPane().setBackground(new Color(198,180,138));
		this.getContentPane().setBackground(new Color(153,217,220));
		this.setLocationRelativeTo(null);
		this.setResizable(false);
		this.setDefaultCloseOperation(3);
		this.setLayout(null);
		this.setVisible(true);
		
		//取得窗体的画笔
		Graphics g = this.getGraphics();
		
		//实例化两个JButton类对象
		JButton jbu1 = new JButton("希尔排序");
		JButton jbu2 = new JButton("快速排序");
		JButton jbu3 = new JButton("SORT SHELL");
		JButton jbu4 = new JButton("SORT QUICK");
		
		//设置JButton对象属性
		jbu1.setBounds(280,100,100,30);
		jbu2.setBounds(420,100,100,30);
		jbu3.setBounds(280,150,100,30);
		jbu4.setBounds(420,150,100,30);
		
			
		//给事件源添加鼠标监听器方法,绑定事件接口对象
		jbu1.addActionListener(sl);
		jbu2.addActionListener(sl);
		jbu3.addActionListener(sl);
		jbu4.addActionListener(sl);
		
		//将窗体的画笔传入到SortListener对象中
		sl.setGraphics(g);
		
		//在窗体上添加JButton组件
		this.add(jbu1);
		this.add(jbu2);
		this.add(jbu3);
		this.add(jbu4);

	}

	/**
	 * 重写JFrame绘制容器的方法
	 */
	public void paint(Graphics g){
		super.paint(g);
		
		for(int i=0;i<5;i++){
			g.setColor(new Color(217,206,176));
			//绘制背景
			g.fillRoundRect(80+i*130, 240, 120, 120, 15, 15);
		}	
	}
}

?

实例化接口:

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionEvent;

/**
 * 事件处理类SortListener,该类要实现ActionListener
 * @author LucyWong
 *
 */
public class SortListener implements java.awt.event.ActionListener{
	
	private static int[] a = {5,2,10,65,45};
	
	//声明一个Graphics类的对象属性
	private Graphics g;
	
	//记录鼠标点击时已排序的次数
	private int click = 0;
	
	//创建一个二维数组,用于存储每次排序的结果
	public int [][] temp = new int [24][5];
	
	//创建Sort排序方法类对象
	Sort sort = new Sort();

	//传入画笔的方法
	public void setGraphics(Graphics g){
		this.g = g;
	}
	
	/**
	 * 重写方法
	 */
	public void actionPerformed(ActionEvent e) {
		String cmd = e.getActionCommand();
		//判断
		if(cmd.equals("希尔排序")){
			for(int i=0;i<5;i++){
				//重置颜色
				g.setColor(new Color(217,206,176));
				//绘制背景
				g.fillRoundRect(80+i*130, 240, 120, 120, 15, 15);
			}
			//重置click
			click = 0;
			//调用Sort对象sort的希尔排序方法
			sort.sf();
			this.temp = sort.b;	
			for(int j=0;j<temp[0].length;j++){
				g.setColor(Color.WHITE);
				g.setFont(new Font("Arial",Font.BOLD,50));
				//显示原始数列
				g.drawString(temp[click][j]+" ", 130+j*120, 315);		
			}
		}else if(cmd.equals("快速排序")){
			for(int i=0;i<5;i++){
				//重置颜色
				g.setColor(new Color(217,206,176));
				//绘制背景
				g.fillRoundRect(80+i*130, 240, 120, 120, 15, 15);
			}
			//重置click
			click = 0;
			//调用Sort对象sort的希尔排序方法
			sort.quickSort(a,0,4);
			this.temp = sort.b;	
			for(int j=0;j<temp[0].length;j++){
				g.setColor(Color.WHITE);
				g.setFont(new Font("Arial",Font.BOLD,50));
				//显示原始数列
				g.drawString(temp[click][j]+" ", 130+j*120, 315);		
			}	
		}else if(cmd.equals("SORT SHELL")){
			for(int i=0;i<5;i++){
				g.setColor(new Color(217,206,176));
				//绘制背景
				g.fillRoundRect(80+i*130, 240, 120, 120, 15, 15);
			}	
			for(int j=0;j<temp[0].length;j++){
				g.setColor(Color.WHITE);
				g.setFont(new Font("Arial",Font.BOLD,50));
				//显示每次排序结果
				g.drawString(temp[click+1][j]+" ", 130+j*120, 315);		
			}
			//click值增加
			click +=1;
		}else{
			
		}
	}
}

?在这个例子里面,就体现了事件的完整机制。SortListener实例化(implements)了ActionListener接口,并重写(Override)了接口的actionPerformed方法。

?

二、数组

?

Java的数组是引用对象,用new关键字来创建。

1.一维数组的声明方式:
? ?数据类型? 数组名[ ];

?? 或数据类型 [ ]? 数组名;

??例如?int?array [];或?int [] array;

?

???在Java中,声明数组时不用指定其长度。

??

2.一维数组的创建方式:

?

? 数组名 = new ?数据类型? [数组长度];

??例如:array = new int [5];

?

3.二维数组的创建方式:

? ? 和一维数组的创建方式类似:

?

??? 数据类型? 数组名[ ][ ];? 或??? 数据类型 [ ][ ]? 数组名;

???? 例如?int?array [][];或?int [][] array;

?

4.数组对象方法

???数组对象唯一的方法为??对象名.length();???返回值为数组对象的长度。

上一篇: PO,VO,BO,DTO定义 下一篇: 数 组
发表评论
用户名: 匿名