使用箭头键移动JLabel

时间:2010-01-16 11:33:34

标签: java swing

对不起,对于双重发布,已经发布了一次这个问题,但我意识到我不够明确。我仍然没有设法找到我的问题的答案,所以我会在这里更好地描述我的问题:

我有以下课程:

public class Paddle extends JLabel {}
public class Canvas extends JPanel implements Runnable {}

现在,当我启动Canvas中描述的线程时,我想要一个无限循环(退出程序时循环)。在这个循环中,我有一个DIRECTION变量。当按下左箭头键时,我希望将其设置为-1。如果按下右箭头键,我希望+1为它的值。如果上述两种情况都不成立,则其值应为默认值0。

我希望这次我更明确。如果没有,请告诉。

1 个答案:

答案 0 :(得分:0)

嗯,要获得击键,你需要有一个实现KeyListener

的类

像这样:

public class MyKeyListener implements KeyListener, MouseListener{
   int direction = 0;

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()  == KeyEvent.VK_LEFT) direction = -1;
        else if(e.getKeyCode()  == KeyEvent.VK_RIGHT) direction = 1;
    }

    public void keyReleased(KeyEvent e) {
        direction = 0;
    }
}

然后在初始化代码中(例如,在JPanel派生类的构造函数中),将键侦听器设置为MyKeyListener类的实例

   MyKeyListener  mk = new MyKeyListener();
   this.addKeyListener(mk);

在你的循环中,你只需看看mk的方向;