0

我在使用 KeyListeners 移动 JLabel 时遇到了一点问题。当我单击一个键来移动我的标签时,它会移动一点,暂停一秒钟,然后移动。如何让我的动作更顺畅?

frame.addKeyListener(new KeyAdapter(){
    public void keyPressed(KeyEvent e) {
        if(e.getKeyChar() == 'w'){
            moveY -= 10;
            label.setLocation(moveX, moveY);
        }
        if(e.getKeyChar() == 'a'){
            moveX -= 10;
            label.setLocation(moveX, moveY);
        }
        if(e.getKeyChar() == 's'){
            moveY += 10;
            label.setLocation(moveX, moveY);
        }
        if(e.getKeyChar() == 'd'){
            moveX += 10;
            label.setLocation(moveX, moveY);
        }
    }
});
4

1 回答 1

3
  1. JFrame默认情况下永远不会对KeyEvent听过的人做出反应KeyListener

  2. JFrame不是可聚焦JComponent的,您需要使用可聚焦的容器,例如,JPanel但又是错误的决定,因为需要设置永久焦点 -setFocusable(true)

  3. 不要使用KeyListenerfor Swing JComponents,使用高度可能的抽象,使用KeyBindings(在此处搜索代码示例)

于 2013-07-31T13:56:38.470 回答