【问题标题】:KeyListener doesn't produce any responseKeyListener 不产生任何响应
【发布时间】:2013-03-16 01:00:00
【问题描述】:

给定以下(部分)代码:

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Test extends Applet implements MouseListener , KeyListener
{
    private static final long serialVersionUID = 1L;
    private static final int TOTAL_POINTS = 500;
    private static final int THRESHOLD = 5;

    // the arrays that contain the indexes of the points that the user created 
    private int[] m_Xindex, m_yIndex;  

    // The number of points that the user created 
    private int m_pointsCreated;       

    @Override
    public void keyTyped(KeyEvent keyEvent) 
    {
          char key = keyEvent.getKeyChar();
          if (key == 'F')
              System.out.println("123");
    } 

    @Override
    public void mouseReleased(MouseEvent arg0) {/* Empty */ }

    @Override
    public void mouseClicked(MouseEvent e) {/* Empty */ }

    @Override
    public void mouseEntered(MouseEvent e) {/* Empty */ }

    @Override
    public void mouseExited(MouseEvent e) {/* Empty */ }

    @Override
    public void mousePressed(MouseEvent myEvent) {/* Empty */ }

    @Override
    public void keyPressed(KeyEvent keyEvent)  {}

    @Override
    public void keyReleased(KeyEvent keyEvent) {}
}  

我删除了我的工作代码,只留下了有问题的代码。

当我按 F 时,我想打印到屏幕上 123 ,但什么都没有 打印到屏幕上。

keyTyped 的代码有什么问题?

【问题讨论】:

  • 另外,不要忘记注册关键监听器。还要注意,关键监听器只有在它注册到的组件是可聚焦的并且具有当前焦点时才会起作用。
  • @AndrewThompson:让它成为一个答案,所以我会选择它作为正确的答案,因为你刚刚让我开心! +1 !!
  • 很高兴你把它整理好了。 :)

标签: java awt listener keylistener


【解决方案1】:
  1. (key == 'F') 更改为if (key.equals('F'))。测试对象等价而不是等价。
  2. 确保组件是focusable & 到requestFocusInWindow()。后者最好通过start() 方法上的@Override 来完成。
  3. 考虑使用 Swing (JApplet) 和键绑定而不是 AWT AppletKeyListener

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-22
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2013-03-05
    • 2010-09-22
    相关资源
    最近更新 更多