0
誰能告訴我什麼是錯的?我試圖讓廣場上下移動。 當我運行小程序,廣場創建在正確的位置,但是當我按UP鍵或DOWN鍵什麼也沒有發生。Java KeyListener不能在applet中工作
package pong;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class pong extends Applet implements KeyListener
{
private Rectangle rect = null;
private int key = 0;
public void init()
{
rect = new Rectangle(0,0,10,10);
addKeyListener(this);
}
public void paint(Graphics g)
{
setSize(200,200);
Graphics2D g2 = (Graphics2D)g;
g2.fill(rect);
}
@Override
public void keyPressed(KeyEvent e)
{
key = e.getKeyCode();
}
public void update()
{
if(key == KeyEvent.VK_UP)
{
rect.setLocation(rect.x, rect.y - 2);
}
else if(key == KeyEvent.VK_DOWN)
{
rect.setLocation(rect.x, rect.y + 2);
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
時FYI:小程序插件不再支持,有效地使小程序否決。我會考慮從Swing開始(並使用鍵綁定API)或JavaFX – MadProgrammer
1)爲什麼編寫applet?如果是由於老師指定它,請將它們轉介給[爲什麼CS教師應該**停止**教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should -stop教學-java的小應用程序/)。 2)爲什麼使用AWT?看到[這個答案](http://stackoverflow.com/questions/6255106/java-gui-listeners-without-awt/6255978#6255978)有很多很好的理由放棄AWT使用組件有利於Swing。 3)對於Swing,我們通常使用[鍵綁定](https://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)而不是較低級別的'KeyListener'。 –