java事件适配器_java事件适配器Adapter

首先,java中一个类只能直接继承自一个类,接口却可以实现多个。

如果一个类implements了一个MouseListner,那么就要在该类中实现所有的MouseListner中的抽象方法,但有很多抽象方法时而只需要使用个别的时候就会出现问题。所以adapter就解决了这个问题。

adapter(适配器)的种类:

ComponentAdapter

ContainerAdapter

FocusAdapter

HierarchyBoundsAdapter

KeyAdapter

MouseAdapter

MouseMotionAdapter

WindowAdapter

2.适配器(adapter)的作用:

简化代码量,使得不用具体实现更多的接口中的抽象方法。

3.挑一个简单的Adapter来说明adapter的共性:

比如:MouseAdapter.

首先大家需要明白的是这个类直接继承自超类,实现的接口有三个。

public abstract class MouseAdapter extends Object

implements MouseListener, MouseWheelListener, MouseMotionListener

在MouseAdapter中,实现了MouseListner中的抽象方法,但是实现的方法中没有代码,需要我们继承使用Adapter时自己重写添加代码,很多同学疑惑那不是跟直接继承接口差不多嘛?其实这样一来,我们在子类中就只需要重写我们需要的动作,比如mouseClicked(),而不用把MouseListner中的所有方法在子类中写一遍。

MouseAdapter的方法摘要:

void

void

看以下代码,看懂就知道adapter怎么用了

这个代码使用MouseAdapter实现了鼠标单击和移动时更新显示的坐标值。

(applet不像aplication,在aplication中必须有main方法,在applet中执行情况如下:

Applet主要方法有init()

start()

stop()

pain()

destroy()

init() 方法是初始化方法,用于在启动Applet程序之前做一些必要的初始化工作!运行Applet程序时首先调用该方法,而且只被调用一次.)

package com.rk;

import java.applet.Applet;

import java.awt.Graphics;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionAdapter;

public class Mainui extends Applet{

int x,y=0;//单击时坐标

int x_move,y_move = 0;//移动时坐标

String s="";

public void init(){

this.addMouseListener(new MouseClick());

this.addMouseMotionListener(new MouseMove());

}

public void paint(Graphics g){

g.drawString("鼠标单击位置:("+x+","+y+")",50,50);

g.drawString("鼠标移动位置:("+x_move+","+y_move+")",50,100);

}

}

class MouseClick extends MouseAdapter{

@Override

public void mouseClicked(java.awt.event.MouseEvent e) {

super.mouseClicked(e);

Mainui m = (Mainui)e.getSource();

m.x = e.getX();

m.y = e.getY();

m.repaint();

}

}

class MouseMove extends MouseMotionAdapter{

@Override

public void mouseMoved(MouseEvent e) {

super.mouseMoved(e);

Mainui mui = (Mainui) e.getSource();//注意此处使用e.getSource()而不是new一个对象,是处理增加了监听事件的对象,不是新对象

mui.x_move = e.getX();

mui.y_move = e.getY();

mui.repaint();//更新画板

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值