繁体   English   中英

如何强制Jpanel立即用Java重新绘制?

[英]How can I force Jpanel to immediately repaint in Java?

这是我的代码

boolean boo = true;

ItemListener itemListener = new ItemListener() {
    public void itemStateChanged(ItemEvent event) {
        boo= false;         
        aSwingObj.repaint();
        boo = true;
     }
}

我希望在boo设置为false之前运行repaint()方法,然后将其变为true。

问题在于,仅在将变量boo再次设置为true后才执行repaint()函数。 我尝试了其他方法,例如revalidate(),validate(),但没有用。 我应该如何修正我的代码?

这是一个XY问题 您不想强迫JPanel立即重新绘制。 您想要在绘画开始之前立即进入特定状态,并在绘画结束后立即退出该状态。

实际上,实现此目标的一种方法是进入该状态,当场强制重新粉刷,然后退出该状态。 但是正如您所看到的,这有点难以实现。

因此,另一种方法是创建一个新类,该类确实extend JPanel (或aSwingObj任何类),以便您可以重写paintComponent()方法,并在完成绘制后使其退出特殊状态。

因此,扩展的JPanelpaintComponent()方法如下所示:

 @Override
 public void paintComponent( Graphics g ) 
 {
        super.paintComponent( g );
        resetBoo();
 }

其中resetBoo()是执行boo = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM