[英]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()
方法,并在完成绘制后使其退出特殊状态。
因此,扩展的JPanel
的paintComponent()
方法如下所示:
@Override
public void paintComponent( Graphics g )
{
super.paintComponent( g );
resetBoo();
}
其中resetBoo()
是执行boo = true;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.