Java JPanel清楚

时间:2015-11-21 21:30:47

标签: java swing jpanel

我需要创建一个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());

    }
}

1 个答案:

答案 0 :(得分:2)

您应该在paintComponent方法中执行所有渲染。这是如何删除旧形状(重绘)。

要制作动画/创建新圈子,您应该使用javax.swing.Timer而不是Thread.sleep

new Timer(10, new ActionListener() {
                 s.move();
                fenster.getArena().repaint();
});