如何在java中使用repaint()保存以前的图形?

时间:2014-06-24 22:08:56

标签: java swing graphics jpanel repaint

我需要更新我的图形,其中有矩形。在每一步,我都需要突出显示并修改其中一些的状态。 但现在在我的代码中,对于每个repaint(),它会绘制一个全新的图片。 我已经阅读了类似的问题: Keeping draw graphics - removing super.paintComponent,这无法解决我的问题。 下次它调用repaint()时,那些矩形消失了。这意味着它抹去了流行的图形。 请帮忙! 这是代码:(“firstPaint = false”就在下一个repaint()之前)

@Override
protected void paintComponent(Graphics g2)   
{  
    super.paintComponent(g2);
    final Graphics2D g = (Graphics2D) g2.create();
    try{
        if(firstPaint){
            int status;
            g.setColor(Color.BLACK);
            for (int i = 0; i < rows; i++)   
            {  
                for (int j = 0; j < columns; j++)   
                {  
                    status = current[i][j];
                    if(status == 1)  
                    {  
                        g.fillRect(j * 20, i * 20, 20, 20);  
                    }  
                }  
            } 
        }

        if(executeResult == 2){
            g.setColor(Color.BLUE);
            for(Cell c:highlightedCells){ 
                g.drawRect(c.j * 20, c.i * 20, 20, 20); 
            } 
        }

        if(executeResult == 1){
            g.setColor(Color.RED);
            for(Cell c:highlightedCells){ 
                g.fillRect(c.j * 20, c.i * 20, 5, 5); 
            } 
        }
    }
    finally{
        g.dispose();
    }
}

0 个答案:

没有答案