按下按钮后多次重绘图形的麻烦

时间:2012-05-02 17:47:46

标签: java graphics redraw

所以这是背景故事。我正在研究一个叫做生命游戏的程序,它模拟了一个世界上非常原始和基本的生活,每个“土地”都可以居住在生命中,无论细胞是否出生,生命或死亡,根据它拥有的邻居数量。因此,在一次“转弯”期间,土地会计算其周围生物体的数量,而不是取决于细胞在空方块中出生的数量,保持活力或死亡。

现在出现问题。对于程序,我必须创建一个图形版本。我想出了如何在屏幕上绘制图形,但每次转弯后我都需要重新绘制图形,以便它们与世界上的生物体相匹配。然而,该程序正在做的是“跳过”重绘直到最后一步。

以下是代码:

private void nextBtnActionPerformed(java.awt.event.ActionEvent evt) {                                        
    if(stepField.getText().isEmpty()){
        numSteps = 1;
    }
    else{
        numSteps = Integer.valueOf(stepField.getText());
    }
    Thread thread = new Thread(new nextStep());
    thread.start();
}                                       

private class nextStep implements Runnable{
    @Override
    public void run() {
            for(int i = 0; i < numSteps; i++){
                EventQueue.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        view.validate();
                        view.repaint();   
                    }
                });
                waitToDraw();
            }
            EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {
                      sim.simOneStep();
                }
            }); 
        }
    }
private void waitToDraw(){
    try{
        Thread.sleep(100);
    }catch(InterruptedException e){
        System.out.println("nope");
    }
}

0 个答案:

没有答案