返回信息流import java.awt.*;
import java.awt.event.*;
public class WindowAdapter {
public static void main(String[] args) {
new MyFrame3();
}
}
class MyFrame3 extends Frame {
MyFrame3() {
setBounds(300,400,800,600);
setLayout(null);
setBackground(new Color(255,255,0));
setVisible(true);
addWindowListener(new WMonitor());
}
class WMonitor extends WindowAdapter {
public void windowClosing(WindowEvent e) {
setVisible(false);
System.exit(0);
}
}
}
请各位看看上面这段代码,我的编译结果是 错误: 不兼容的类型: MyFrame3.WMonitor无法转换为WindowListener
addWindowListener(new WMonitor());
但是,MouseAdapter可以转换为MouseListener,比如下面这段代码:
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class MyMouseAdapter {
public static void main(String[] args) {
new MFrame();
}
}
class MFrame extends Frame {
ArrayList<Point> points = null;
MFrame() {
points = new ArrayList();
setLayout(null);
setBounds(300,300,800,600);
setBackground(new Color(200,190,240));
setVisible(true);
addMouseListener(new Monitor());
}
public void paint(Graphics g) {
Iterator<Point> i = points.iterator();
while(i.hasNext()) {
Point p = i.next();
g.setColor(Color.red);
g.drawOval(p.x, p.y, 5,5);
}
}
public void addPoint(Point p) {
points.add(p);
}
}
class Monitor extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
MFrame mf = (MFrame)e.getSource();
mf.addPoint(new Point(e.getX(),e.getY()));
mf.repaint();
}
}
求解答
这是一条镜像帖。来源:北邮人论坛 / java / #38580同步于 2015/2/7
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
问个关于Listener的问题
wht
2015/2/7镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
。。。
我在看GUI编程,java.awt包里的各种监听机制,具体我也不太懂,只知道jdk对鼠标键盘点击那些都做了相应的接口,只要实现了这些接口里的抽象方法就可以实现一些响应。但是要实现接口就需要重写接口内所有的抽象方法。jdk为了方便,对每种接口都提供了子类Adapter,这样下来如果要实现接口,只需要从子类Adapter继承,然后重写需要的方法就成。但是唯独WindowListener这个接口在jdk1.8中是不能够这样做的。。
这是我的理解,可能有错误,大神发现的话还请指正~
【 在 icyfox (【意涵团】狐狸|SSH) 的大作中提到: 】
: 我看了不太懂
通过『我邮2.0』发布
改了也不行的~
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: 第四行,你自己定义了一个类,也叫WindowAdapter
通过『我邮2.0』发布
回暖神,确实是我自己定义类名的问题,改了以后在jdk1.6和1.8中都是可用的,写成匿名类也行了。膜拜暖神
@icyfox
【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: 是不是改了就报别的错了?
: 来自「北邮人论坛手机版」
通过『我邮2.0』发布
这东西的学名叫做适配器
【 在 wht (【zybd】【lgkk】|谁与争锋|仙剑永恒) 的大作中提到: 】
: 。。。
: 我在看GUI编程,java.awt包里的各种监听机制,具体我也不太懂,只知道jdk对鼠标键盘点击那些都做了相应的接口,只要实现了这些接口里的抽象方法就可以实现一些响应。但是要实现接口就需要重写接口内所有的抽象方法。jdk为了方便,对每种接口都提供了子类Adapter,这样下来如果要实现接口,只需要从子类Adapter继承,然后重写需要的方法就成。但是唯独WindowListener这个接口在jdk1.8中是不能够这样做的。。
: 这是我的理解,可能有错误,大神发现的话还请指正~
: ...................
通过『我邮2.0』发布
see
..
【 在 wht (【zybd】【lgkk】|谁与争锋|仙剑永恒) 的大作中提到: 】
: 回暖神,确实是我自己定义类名的问题,改了以后在jdk1.6和1.8中都是可用的,写成匿名类也行了。膜拜暖神
: @icyfox
: 【 在 nuanyangyang (暖羊羊) 的大作中提到: 】
: ...................