请教高手,关于事件和事件源的问题, 可以先理解一下this的含义。--------------------------------------第一种写法,this包含了所实现的接口中的东西;第二种写法,对象包含了所实现的接口中的东西; 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你是初学者吗?我问的是这两种编写方式为什么不能颠倒一下?把第一个的jp1和this相互颠倒一下,为什么不能?jp1.addMouseListener(this); this.addMouseListener(t1); 你看下面的代码:public class test7 extends JFrame implements MouseListener,KeyListener{ /** * @param args */ JPanel jp1; public static void main(String[] args) { // TODO Auto-generated method stub test7 t1=new test7(); } public test7() { jp1=new JPanel(); this.add(jp1); jp1.addMouseListener(this); jp1.addKeyListener(this); this.setSize(500,500); this.setLocation(300,150); this.setTitle("我的程序"); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); }public void keyPressed(KeyEvent arg0) { // TODO Auto-generated method stub System.out.println(arg0.getKeyChar()+"键被按下"); }public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("进入了窗体");}@Overridepublic void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("离开了窗体");}}请问下,为什么运行这部分代码后,鼠标事件都能发生,为什么键盘按下的事件不能发生??代码没有问题,主类实现了键盘的监听接口和鼠标键盘的接口,但是在注册组件时候,是JPanel是事件发生者,窗体也就是主类本身是监听者,怎么鼠标事件能发生,而键盘的事件不能发生,是不是窗体本身没有键盘事件呢? 你是初学者吗?我问的是这两种编写方式为什么不能颠倒一下?把第一个的jp1和this相互颠倒一下,为什么不能?jp1.addMouseListener(this); this.addMouseListener(t1);这个是不能颠倒的,jp1是需要添加鼠标事件的对象,而this是包含了监听器的对象。是要在jp1上添加监听器的,而不是要在监听器上添加被监听对象的。 你看下面的代码:public class test7 extends JFrame implements MouseListener,KeyListener{ /** * @param args */ JPanel jp1; public static void main(String[] args) { // TODO Auto-generated method stub test7 t1=new test7(); } public test7() { jp1=new JPanel(); this.add(jp1); jp1.addMouseListener(this); jp1.addKeyListener(this); this.setSize(500,500); this.setLocation(300,150); this.setTitle("我的程序"); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); }public void keyPressed(KeyEvent arg0) { // TODO Auto-generated method stub System.out.println(arg0.getKeyChar()+"键被按下"); }public void mouseEntered(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("进入了窗体");}@Overridepublic void mouseExited(MouseEvent arg0) { // TODO Auto-generated method stub System.out.println("离开了窗体");}}请问下,为什么运行这部分代码后,鼠标事件都能发生,为什么键盘按下的事件不能发生??代码没有问题,主类实现了键盘的监听接口和鼠标键盘的接口,但是在注册组件时候,是JPanel是事件发生者,窗体也就是主类本身是监听者,怎么鼠标事件能发生,而键盘的事件不能发生,是不是窗体本身没有键盘事件呢?这里有一个以前就有人问过的贴子了,你看一下吧http://bbs.csdn.net/topics/330105242 String 作用域问题、错误. java 获取当前时间后,怎么计算得到延迟3小时候的时间 vector 帮忙解释一下!!! 请高手看看这个问题出现在哪里啊?怎么解决啊??? 关于String,byte之间的问题 java.class.path属性的值 JAVA进入成熟期后将会怎样????? 如何判断是否按下的是2个键(如“上”和“右”),我很急,谢谢 高分求教,散分! 请教一个关于在eclipse中导入文件的问题, 谢啦 循环输入字符到StringBuffer 最后输出字符问题
public class test7 extends JFrame implements MouseListener,KeyListener{ /**
* @param args
*/
JPanel jp1;
public static void main(String[] args) {
// TODO Auto-generated method stub
test7 t1=new test7();
}
public test7()
{ jp1=new JPanel();
this.add(jp1);
jp1.addMouseListener(this);
jp1.addKeyListener(this);
this.setSize(500,500);
this.setLocation(300,150);
this.setTitle("我的程序");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
}
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
System.out.println(arg0.getKeyChar()+"键被按下");
}
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("进入了窗体");
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("离开了窗体");
}
}
请问下,为什么运行这部分代码后,鼠标事件都能发生,为什么键盘按下的事件不能发生??代码没有问题,主类实现了键盘的监听接口和鼠标键盘的接口,但是在注册组件时候,是JPanel是事件发生者,窗体也就是主类本身是监听者,怎么鼠标事件能发生,而键盘的事件不能发生,是不是窗体本身没有键盘事件呢?
public class test7 extends JFrame implements MouseListener,KeyListener{ /**
* @param args
*/
JPanel jp1;
public static void main(String[] args) {
// TODO Auto-generated method stub
test7 t1=new test7();
}
public test7()
{ jp1=new JPanel();
this.add(jp1);
jp1.addMouseListener(this);
jp1.addKeyListener(this);
this.setSize(500,500);
this.setLocation(300,150);
this.setTitle("我的程序");
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
}
public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub
System.out.println(arg0.getKeyChar()+"键被按下");
}
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("进入了窗体");
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
System.out.println("离开了窗体");
}
}
请问下,为什么运行这部分代码后,鼠标事件都能发生,为什么键盘按下的事件不能发生??代码没有问题,主类实现了键盘的监听接口和鼠标键盘的接口,但是在注册组件时候,是JPanel是事件发生者,窗体也就是主类本身是监听者,怎么鼠标事件能发生,而键盘的事件不能发生,是不是窗体本身没有键盘事件呢?这里有一个以前就有人问过的贴子了,你看一下吧
http://bbs.csdn.net/topics/330105242