protected class Racer extends JPanel implements Runnable{
private int racePos;
private int frameWidth = trump.getIconWidth()*20;
private int finalRacePos = frameWidth - 2*trump.getIconWidth();
private Random jumpRan = new Random();
public void run() {
while(racePos < finalRacePos){
repaint();
try {
TimeUnit.SECONDS.sleep((long)Math.random());
} catch (InterruptedException e) {
e.printStackTrace();
}
racePos += jumpRan.nextInt(10);
}
}
public void paintComponent(Graphics g){
super.paintComponent(g);
trump.paintIcon(this, g, racePos, 0);
}
}
}
当我运行时,王牌图标最初在左侧绘制,但它们从不移动。我究竟做错了什么?我是否从根本上错过了使用Graphics / PaintComponent的东西?
答案 0 :(得分:0)
我认为你使用的是Thread类(即新的Thread(racer)) 并在UI中使用相同的racer实例。 你也使用thread.start()而不是thread.run()(我见过很多人都犯了这个错误)。
如果以上情况属实: 确保finalRacePos&gt; racePos。调试run方法并确保在增加X坐标的情况下多次调用paint。