import java.awt.*;
import java.awt.event.*;
public class MultiListenerTest implements ActionListener, MouseListener,MouseMotionListener,WindowListener{
Frame f = new Frame("MultiListenerTest");
Button b = new Button("退出");
Label l = new Label("请按下鼠标左键并拖动");
TextField tf = new TextField(40);
//创建一个方法
public void Start(){
b.addActionListener(this); //给按钮添加监听事件
f.add(l,BorderLayout.NORTH);//添加组件并进行布
f.add(tf,BorderLayout.SOUTH);//添加组件并进行布
f.add(b,BorderLayout.EAST);//添加组件并进行布局
f.setBackground(Color.CYAN);//设置frame的颜色
f.addMouseListener(this); // 给frame添加MouseListener事件
f.addMouseMotionListener(this);//给frame添加MouseMotionListener事件
f.addWindowListener(this);//给frame添加 WindowListener 事件
f.setLocationByPlatform(true);
f.setSize(400,300);
f.setVisible(true);
}
//重写ActionListener中的actionPerformed(ActionEvent e) 方法
public void actionPerformed(ActionEvent e){
System.exit(1);//退出窗口,关闭窗口
}
//重写MouseMotionListener中mouseDragged(MouseEvent e)方法
public void mouseDragged(MouseEvent e){
String str = "鼠标位置为: X="+e.getX() + ", Y="+e.getY();
tf.setText(str);
}
//重写MouseListener中的mouseEntered(MouseEvent e)方法
public void mouseEntered(MouseEvent e){
String str = "鼠标进入窗体X="+e.getX()+", Y="+e.getY();
tf.setText(str);
}
//重写MouseListener中的mouseExited(MouseEvent e)
public void mouseExited(MouseEvent e){
String str = "鼠标退出窗体";
tf.setText(str);
}
//重写MouseListener中的mouseMoved(MouseEvente e)方法
public void mouseMoved(MouseEvent e){
String str = "鼠标进入窗体X="+e.getX()+", Y="+e.getY();
tf.setText(str);
}
//重写MouseListener中的 mousePressed(MouseEvente e)方法
public void mousePressed(MouseEvent e){
}
//重写MouseListener中的 mouseClicked(MouseEvente e)方法
public void mouseClicked(MouseEvent e){
}
//重写MouseListener中的 mouseReleased(MouseEvente e)方法
public void mouseReleased(MouseEvent e){
}
//下面的是重写WindowListener中的所有的抽象方法
public void windowActivated(WindowEvent e){
}
public void windowClosed(WindowEvent e){
}
public void windowClosing(WindowEvent e){
System.exit(0);//关闭窗口
}
public void windowDeactivated(WindowEvent e){
}
public void windowDeiconified(WindowEvent e){
}
public void windowIconified(WindowEvent e){
}
public void windowOpened(WindowEvent e){
}
// 创建main方法,
public static void main(String[] args){
new MultiListenerTest().Start();
}
}
// 由于监听器的类型是接口类型,
//所以在使用监听器的时候要重写监听器所有的抽象方法