我需要创建一个2D模拟,但在设置一个新的“框架”时,旧的不会被清除。
我想要一些圈子在竞技场中移动,并且旧圈子的每个循环都应该被移除并且新的圈子会产生。一切正常,但旧的不清除,仍然可见,这就是我需要改变的地方。
GameLoop
@Override
public void run() {
while(true){
try {
Thread.sleep(10);
for(Schleimpilz s : this.pilz){
s.move();
fenster.getArena().repaint();;
fenster.getArena().paintPilz();
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是竞技场类(扩展Jpanel),Jpanel需要清除
public void paintPilz() {
//how to clear the old values here?
super.paintComponent(graphics);
setBackground(Color.WHITE);
for(Schleimpilz s : schleimpilz){
printNewSchleimpilz(s.getLocX(), s.getLocY());
}
}
答案 0 :(得分:2)
您应该在paintComponent方法中执行所有渲染。这是如何删除旧形状(重绘)。
要制作动画/创建新圈子,您应该使用javax.swing.Timer而不是Thread.sleep
new Timer(10, new ActionListener() {
s.move();
fenster.getArena().repaint();
});