已有101人关注
第13章 Swing 程序设计 求大神指导如何使一个类实现多种类型的事件监听
发表在Java图书答疑 2016-03-18
是否精华
版块置顶:
问题详述:我在MyPanel类里同时实现了ActionListener和KeyListener,但是我只要释放掉注释的代码,键盘监听就会失效,请问这种问题的错误原因是什么,应该怎么解决?

源码如下:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {
public static void main(String[] args){
new MyFrame();
}
}

class MyFrame extends JFrame{
MyPanel mp=null;
public MyFrame(){
mp=new MyPanel();
this.addKeyListener(mp);
this.add(mp);

this.setVisible(true);
this.setLocation(500, 300);
this.setSize(150, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

class MyPanel extends JPanel implements ActionListener,KeyListener{
JButton jb=null;
public MyPanel(){
jb=new JButton("监听测试");
jb.setActionCommand("test");
jb.addActionListener(this);
// this.add(jb);
}

public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("test")){
System.out.println("按钮被点击");
}
}

public void keyTyped(KeyEvent e){
System.out.println("键盘键入某键");
}
public void keyReleased(KeyEvent e){
System.out.println("键盘释放某键");
}
public void keyPressed(KeyEvent e){
System.out.println("键盘按下某键");
}
}
分享到:
精彩评论 2
静心_mrkj
学分:0 LV1
2016-03-22
沙发
当程序运行时,除了窗体,按钮会第一时间捕获焦点,这时键盘事件的监听就会失效。但是单击按钮后,键盘事件的监听开始生效。代码格式详见附件“1.rar”。
西瓜_mrkj
学分:0 LV1
2016-03-22
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
当程序运行时,除了窗体,按钮会第一时间捕获焦点,这时键盘事件的监听就会失效。但是单击按钮后,键盘事件的监听开始生效。代码格式详见附件“1.rar”。
[/FIELDSET]

回复:明白了,谢谢老师。
  
首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照