MouseEvent

tbinjiayou 2010-09-24 12:40:54

class MyMouseListener extends MouseAdapter{
private int step; //决定Button上的标号每次增加的步长
public MyMouseListener(int step){this.step=step;}
public void mousePressed(MouseEvent evt){
EventObject e = (EventObject)evt; //显示无法Cast的错误,但是MouseEvent明明就是EventObject的子类?
Button button=(Button)evt.getSource(); //显示evt没有getSource这个方法,该方法不是从EventObject继承的嘛?
int count=Integer.parseInt(button.getLabel());
button.setLabel(new Integer(step+count).toString()); //把Button上的标号加step
}
}

上面这些问题让我很是头痛啊
...全文
238 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
magong 2010-09-26
  • 打赏
  • 举报
回复
包import方便啊,小心点用吧。
语言特性就是这么着,没办法。
我最初看到IBM出的那些代码都非常长,就很奇怪,后来知道人家早就建议不用包import。更有甚者,import都用得少,直接写冗长的类名到代码中去。大工不巧啊。
tbinjiayou 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 magong 的回复:]
引用 12 楼 tangbin330 的回复:
import java.awt.event.*;

尽量不要用包import,这样如果类路径中有本包的另外一个MouseEvent类的话,将优先匹配那个MouseEvent类。
[/Quote]
谢谢,我将MouseEvent使用完整限定名就没错了。因为我是初学Java,刚刚听你点醒,原来我的工程文件中自定义了一个类名,MouseEvent。我想问一声,如果不使用包import,那要如何做呢?倘若我文件中需要使用数十个event包中的类,难道也不使用import吗?
magong 2010-09-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tangbin330 的回复:]
import java.awt.event.*;
[/Quote]
尽量不要用包import,这样如果类路径中有本包的另外一个MouseEvent类的话,将优先匹配那个MouseEvent类。
tbinjiayou 2010-09-26
  • 打赏
  • 举报
回复

package MyEvent;

import java.awt.event.*;
import java.awt.*;
import java.util.EventObject;

public class AdapterCounter extends Frame{
private Button button=new Button("1");

public AdapterCounter(String title){
super(title);
//把MyMouseListener的实例注册为Button的监听器
button.addMouseListener(new MyMouseListener(2));
add(button);
setSize(100,100);
setVisible(true);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}

public static void main(String args[]){
new AdapterCounter("hello");
}
}

class MyMouseListener extends MouseAdapter{
private int step; //决定Button上的标号每次增加的步长
public MyMouseListener(int step){this.step=step;}
public void mousePressed(MouseEvent e){
EventObject evt = (EventObject)e;
Button button=(Button)evt.getSource();
int count=Integer.parseInt(button.getLabel());
button.setLabel(new Integer(step+count).toString()); //把Button上的标号加step
}
}
tbinjiayou 2010-09-26
  • 打赏
  • 举报
回复
谢谢各位的细心回答
tbinjiayou 2010-09-25
  • 打赏
  • 举报
回复
import也是没错的,我刚刚又在另一台机子上跑了,也是没问题的。应该是我这里的机子问题,不是语法问题。就是不知道我这环境出什么错了
magong 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tangbin330 的回复:]

我的意思是我上面代码应该是没有问题的,因为我把代码换到另一台电脑上运行都是没有错的。我MyEclipse的JDK版本是jse1.6的,版本应该也是没有问题。MyEclipse跑其他程序也都没有问题,为什么这个会报类型转换错误?
[/Quote]
是古怪了,

倒是有点怀疑是类import错了,但是想想那是很低级的问题,不应该想到那里去。
tbinjiayou 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ysj300 的回复:]
EventObject e = (EventObject)evt; //显示无法Cast的错误,但是MouseEvent明明就是EventObject的子类?
Button button=(Button)evt.getSource(); //显示evt没有getSource这个方法,该方法不是从EventObject继承的嘛?
看到没有你把下面的evt下错了,应该是e才对。自己在看看。
[/Quote]
没有错,我是因为evt无法调用getSource方法,才试着看evt是否能够转型为EventObject的。结果转型出错。MouseEvent是EventObject的子类,自然也继承了它的getSource方法
铑枪--突廆孒 2010-09-25
  • 打赏
  • 举报
回复
把你所有的代码贴出来看看吧。包括包的申明和导入的包路径 。
tbinjiayou 2010-09-25
  • 打赏
  • 举报
回复
关键是我用的jdk版本是1.6的,运行其他项目程序都没问题。唯独这个EventObject的继承关系出问题,纠结啊
24K純帥 2010-09-25
  • 打赏
  • 举报
回复
不是代码的错,那很难帮你找出问题了
ysj300 2010-09-24
  • 打赏
  • 举报
回复
EventObject e = (EventObject)evt; //显示无法Cast的错误,但是MouseEvent明明就是EventObject的子类?
Button button=(Button)evt.getSource(); //显示evt没有getSource这个方法,该方法不是从EventObject继承的嘛?
看到没有你把下面的evt下错了,应该是e才对。自己在看看。
tbinjiayou 2010-09-24
  • 打赏
  • 举报
回复
我的意思是我上面代码应该是没有问题的,因为我把代码换到另一台电脑上运行都是没有错的。我MyEclipse的JDK版本是jse1.6的,版本应该也是没有问题。MyEclipse跑其他程序也都没有问题,为什么这个会报类型转换错误?
茫茫大海 2010-09-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 tangbin330 的回复:]
Java code

class MyMouseListener extends MouseAdapter{
private int step; //决定Button上的标号每次增加的步长
public MyMouseListener(int step){this.step=step;}
public void mousePressed(MouseEvent evt){
……
[/Quote]
我用的JDK1.6,正确的!
xiaochun91103 2010-09-24
  • 打赏
  • 举报
回复
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;

class Test32 extends JFrame implements MouseListener {

JButton bt = new JButton("Step");
int step=1;
public Test32() {
super();
this.setSize(100, 100);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);

bt.setText("Step"+step);
bt.addMouseListener(this);
this.add(bt);
}

public static void main(String[] args) {
new Test32();
}

public void mouseClicked(MouseEvent e) {
}

public void mouseEntered(MouseEvent e) {
}

public void mouseExited(MouseEvent e) {
}

public void mousePressed(MouseEvent e) {
step++;
bt.setText("Step"+step);
}

public void mouseReleased(MouseEvent e) {
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧