【问题标题】:Why the KeyEvent doesn't working though implemented KeyListener interface? [duplicate]为什么 KeyEvent 不工作虽然实现了 KeyListener 接口? [复制]
【发布时间】:2016-03-19 20:48:23
【问题描述】:

KeyDemo 类中,我实现了KeyListener,但我不明白为什么KeyEvents 不起作用。我正在按键,但没有任何反应。这只是一个大类中的一个简短的Demo 类。有人帮我解决这个问题。

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class KeyDemo extends JPanel implements KeyListener {

    public KeyDemo() {
        // TODO Auto-generated constructor stub
        addKeyListener(this);
    }

    @Override
    public void keyPressed(KeyEvent e) {

        switch (e.getKeyCode()) {
        case KeyEvent.VK_UP:
            System.out.println("moving up");
            break;
        case KeyEvent.VK_RIGHT:
            robot.moveRight();
            robot.setMovingRight(true);
            break;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {

        switch (e.getKeyCode()) {
        case KeyEvent.VK_UP:
            System.out.println("stop moving up");
            break;
        case KeyEvent.VK_LEFT:
            robot.stopLeft();
            break;
        }
    }

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub

    }   
}

主类:

public class Main{
    public static void main(String[] args){
        JFrame f = new JFrame();
        f.setSize(400, 400);
        f.setVisible(true);
        KeyDemo demo = new  KeyDemo();
        f.add(demo);
    }
}

【问题讨论】:

    标签: java jpanel keylistener keyevent


    【解决方案1】:

    这是一个焦点问题。

    尝试点击 Tab 以获得面板上的焦点或调用

    demo.requestFocus();
    

    【讨论】:

    • 我打了Tab,添加了demo.requestFocus(),但没有任何效果。为什么? @Paco Abato
    • 谢谢大家。我的问题已经解决了。
    【解决方案2】:

    可能你的KeyDemo 类没有焦点。

    无论如何,这些天来,推荐的方法是使用键绑定:https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html

    【讨论】:

    • 我设置了KeyDemofocusable true。但它不起作用。实际发生了什么问题?
    • 我设置了KeyDemofocusable true。但它不起作用。 actullay发生了什么问题? @ControlAltDel
    猜你喜欢
    • 2015-01-15
    • 2022-10-08
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 2016-11-29
    • 2013-09-20
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多