我的Java学习之路笔记(我会将各个知识点的知识分别独立出来,可以根据自己所需,看相关的知识点)
注:该知识点是无序的!!!
(本文章是我自学Java对一下知识点的理解,放在这里主要是为了记录自己的笔记,以及分享我的观点,如有错误理解,或更好的理解,请指出!)
事件适配器(Adapter)的用法。
(适配器较多,只用一个例子进行讲解)
首先我们先对适配器有一定的认识:
/*
事件适配器(Adapter): 1.(适配器使用之前背景)当我们操作的一些列操作,产生的事件,我们要对这些事件作出反应
因此我们要为一些组件注册监听程序,然后去实现对应的接口方法例如:MouseEvent对应的接口为MouseListener,和MouseMotionListener两个接口
2.(为何要使用适配器)但每一个接口中都有很多的抽象方法,但我们只想实现某一个事件的响应,这时候如果我们每一个方法都自己去实现就太麻烦了!!
为此我们可以让定义实现接口的类去继承该接口对应的适配器,注:(类的继承只能单继承)
3:(适配器的内容): 每个接口对应的适配器类内都已经将接口全部实现,只是实现的方法的方法体都为空,(无实际内容)
- (用户使用适配器的具体实现): 可以对适配器中感兴趣的方法进行重写,让其变得具体,有实际意义
5.相关的测试在TestAdapter类中
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
// 鼠标(mouse)一系列操作,引发 MouseEvent 已经对应的两个接口 MouseListener,MouseMotionListener
public class TestAdapter extends MouseAdapter implements MouseMotionListener {
private JFrame frame;
private JTextField tf;
public static void main(String[] args) {
TestAdapter tes = new TestAdapter();
tes.go();
}
//JTextField类继承了
public void go() {
frame = new JFrame("Two Listener example!");
Container contentPane = frame.getContentPane();
contentPane.add(new Label("Click and drag the mouse "), BorderLayout.NORTH);// 添加标签对象在北部
tf = new JTextField(30);// (待考察)
contentPane.add(tf, BorderLayout.SOUTH);
//注册监听程序,这里可以传入 this的原因是因为当前类已经实现以下两个接口的方法 ,可以称为监听程序的类
frame.addMouseMotionListener(this); //--------对应的接口 MouseMotionListener
frame.addMouseListener(this); //---------对应的接口 MouseListener
frame.setSize(300, 300);// 设置窗口大小
frame.setVisible(true);// 显示内容
}
//-----------------MouseListener(接口)中的(五个)方法只重写感兴趣的两个
// -------------------- 简单说 seText(String s) 该方法为父类(JTextComponent)可以改变显示的文本
public void mouseEntered(MouseEvent e) { // 鼠标进入窗口反应方法
String s = "The mouse Entered";
tf.setText(s);
}
public void mouseExited(MouseEvent e) { // 鼠标退出窗口反应方法
String s = "The mouse has left the building";
tf.setText(s);
}
// ------------------MouseMotionListener (接口) (中两个抽象方法)---------------------
@Override
public void mouseDragged(MouseEvent e) {
String s="Mouse dragging:X="+e.getX()+",Y="+e.getY();// 获得取坐标
tf.setText(s);
}
@Override
public void mouseMoved(MouseEvent e) {
}
}
以上就是对事件适配器的使用,如有所帮助,小赞可给予我莫大的动力!!!!