摆动 - 停止闪烁的图像

时间:2015-04-29 00:57:33

标签: java swing

我最近一直在练习java的swing功能,在我的一个扩展JPanel类的类中,我重写了方法paintComponent(),以便将我的BufferedImage绘制到JPanel上。我也有一个方法可以四处移动。在这个问题出现之前,我遇到了一个问题,它显示了移动过程,因为它重新刷新太快。因此,我创建了一个名为available的布尔变量,当图像仍在移动过程中时,该变量设置为false。但是,现在我看到屏幕正在取走整个图像并将其放回,导致它闪烁。这是我的基本伪代码:

class A extends JPanel{
    BufferedImage canvas;
    public A(){
        //create image here
    }
    public move(){
        available = false;
        //move things around in here
        available = true;
    }
    @Override
    protected void paintComponent(Graphics g){
        super.paintComponent(g);
        if(available){
            g.drawImage(this.canvas, 0, 0, null);
        }
        g.dispose();
    }
}
class B{
    public static void main(String[] args){
        //construct the class A JPanel
        while(some_variable){
            class_A_JPanel.repaint();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这是在现代Java中修复的非常古老的主题。但你更喜欢老方法,然后使用旧技术。例如Double Buffering