我想在按下箭頭鍵時將圖像在屏幕上向右移動16。我想以一個速度(1px/10ms)移動它直到達到該點。該圖像是在JPanel的子類中創建的。 我寫了下面的代碼,但圖像instatly改變位置而不是使運動:用Swing移動圖像
public class Test extends JFrame implements KeyListener {
private int x=0;
private int y=0;
BufferedImage img;
...
...
public void paint(Graphics g){
g.drawImage(img,x,y,null);
}
// Move to a point 16 pixels to right
public void moveRight(){
for(int i=0;i<16;i++){
x++;
repaint();
try {
Thread.sleep(10); // Sleep 10 milliseconds until next position change
}catch (InterruptedException e) {}
}
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT){
moveRight();
}
}
}
+1一個'javax.swing.Timer',顯示在[here](http:// stackoverf low.com/q/9849950/230513)是此上下文中「SwingWorker」的替代方案。 – trashgod 2012-04-20 23:44:38