A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘云龙 中级黑马   /  2012-10-10 15:15  /  2544 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. <p>import java.awt.Graphics;
  2. import java.awt.event.KeyAdapter;
  3. import
  4. java.awt.event.KeyEvent;</p>
  5. <p>import javax.swing.JFrame;
  6. import javax.swing.JPanel;</p>
  7. <p>public class MyPanel extends JPanel
  8. {
  9. int x = 12, y = 22;

  10.   MyPanel()
  11.   {
  12.    this.addKeyListener(new KeyAdapter()
  13.    {
  14.     public void keyPressed(KeyEvent e)
  15.     {
  16.      int code = e.getKeyCode();
  17.      switch(code)
  18.      {
  19.             case KeyEvent.VK_UP:add();//在这里调用了add()方法但不响应?
  20.      }   
  21. }
  22. });
  23. }
  24.   
  25.   public void paint(Graphics g)
  26.   {
  27.    g.drawString("MyPanel",x,y);
  28.   }
  29.   
  30.   public void add()
  31.   
  32. {
  33.    x++;
  34.    y++;
  35.    repaint();
  36.   
  37. }
  38. public static void main(String[] args)
  39. {
  40.   //
  41. TODO Auto-generated method stub
  42.   JFrame f = new
  43. JFrame();
  44.   f.setBounds(1, 2, 300,
  45. 300);
  46.   f.setVisible(true);
  47.   f.add(new
  48. MyPanel());
  49.   
  50. }</p>
  51. <p>}</p>
复制代码
如何在JPanel中实现键盘事件?

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

3 个回复

正序浏览
用requestFocusInWindow()实现的
回复 使用道具 举报
  1. public static void main(String[] args)
  2. {
  3.   JFrame f = new
  4.   JFrame();
  5.   f.setBounds(1, 2, 300, 300);
  6.   
  7.   MyPanel myPanel=new MyPanel();
  8.   f.add(myPanel);
  9.   f.setVisible(true);
  10.   myPanel.requestFocusInWindow();//让面板获得焦点
  11. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
this.setFocusable(true);
在构造方法里加上这句吧    JPanel组件的默认焦点状态为false 所以就无法响应你为它添加的事件, 改成true就行了

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马