好的,我如何使用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)
还是线程?
答案 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。