Java Applet - 在屏幕上移动一个球

时间:2012-01-16 17:12:29

标签: java applet

好的,我如何使用Applet从键盘移动?

我到目前为止这段代码没有做任何事情。

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

public class KeyboardGame extends Applet implements KeyListener
{

    private static final long serialVersionUID = 1L;
    private static boolean keyboadrRightPressed = false;

    public void init()
    {
         addKeyListener(this);
    }

    public void keyPressed(KeyEvent e) 
    {
        int keyCode = e.getKeyCode();
        if(keyCode == KeyEvent.VK_RIGHT)
        {
            keyboadrRightPressed = true;
        }
        else
        {
            keyboadrRightPressed = false;
        }
    }

    public void keyReleased(KeyEvent e) {

    }

    public void keyTyped(KeyEvent e) {
    }

    public void paint(Graphics g)
    {
        g.fillOval(20,20,20,20);
        g.drawString("String :"+keyboadrRightPressed,20,30);
    }

}

而且我必须了解它是如何工作的。我不明白为什么我的动作听众不会工作,我需要一个

while(true)

还是线程?

1 个答案:

答案 0 :(得分:2)

您的动作侦听器实际上可能正常工作,但是您需要在按下键时重新绘制applet,以便实际显示您的字符串。尝试将keyPressed更改为:

public void keyPressed(KeyEvent e) 
{
    int keyCode = e.getKeyCode();
    if(keyCode == KeyEvent.VK_RIGHT)
    {
        keyboadrRightPressed = true;
    }
    else
    {
        keyboadrRightPressed = false;
    }
    repaint();
}

实际上移动球将根据你想要球实际移动的方式而有所不同。我猜你希望它能在键按下时继续向右移动,所以我要做的是实现一个计时器或其他形式的线程,每隔0.25秒(或者你想要多长时间)检查keyboardRightPressed并将如果是真的,请将球向右移动。然后在代码的keyReleased部分中,你还应该添加逻辑,以便在你放开密钥时将keyboardRightPressed设置为false。