📄 planecontainer.java
字号:
import java.util.*;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;
import java.net.URL;
import java.awt.AWTEvent;
import java.util.EventListener;
import java.awt.Image;
class PlaneEvent extends AWTEvent //定义飞机构件的事件
{
Object plane; //返回飞机的构件。
public PlaneEvent(Planeable source,Object plane)
{
super(source,-1); //得到事件源
this.plane=plane;
}
public Planeable getPlaneable() //返回事件源方法
{
return (Planeable)source;
}
public Object planes() //返回飞机构件方法
{
return plane;
}
}
interface PlaneListener extends EventListener //定义飞机的监听者方法
{
void planePerformed(PlaneEvent e);
}
interface Planeable //定义飞机的加载与移除监听者方法
{
public Object getPlane(); //返回飞机的构件的方法
public void addPlaneListener(PlaneListener I);
public void removePlaneListener(PlaneListener I);
}
//飞机构件类
public class PlaneContainer extends Component implements Planeable
{
protected int pp,dd; //飞机所属玩家数以及飞机的ID
private Object planes=new Object(); //返回飞机的事件方法
private Vector listener; //向量变量,用来循环注册的监听者
PlaneEvent e=new PlaneEvent(this,this); //定义飞机事件对象,将构件注册为事件源
//飞机构件的构造方法
public PlaneContainer(int x,int y)
{
pp=x; dd=y; //得到当前玩家数以及玩家的飞机的ID
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent event) //用鼠标事件来驱动飞机事件
{
processPlaneEvent(e); //调用飞机监听者执行方法
}
});
}
public Object getPlane() //返回飞机构件方法
{
planes=this;
return planes;
}
public void addPlaneListener(PlaneListener I) //加载监听者方法
{
listener.addElement(I);
}
public void removePlaneListener(PlaneListener I) //移除监听者方法
{
listener.removeElement(I);
}
protected synchronized void processPlaneEvent(PlaneEvent event) //监听者处理方法
{
Enumeration e=listener.elements();
while(e.hasMoreElements()) //用向量来循环飞机的注册监听者
{
PlaneListener I=(PlaneListener)e.nextElement();
I.planePerformed(event); //调用监听者的注册方法
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -