我最近一直在练习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();
}
}
}