Java 如何判断我的JComponent是否正在接收来自软件的重新绘制调用?

Java 如何判断我的JComponent是否正在接收来自软件的重新绘制调用?,java,swing,awt,repaint,eventqueue,Java,Swing,Awt,Repaint,Eventqueue,我试图缩小我的JComponent没有重新绘制的范围。奇怪的是,我可以重新绘制鼠标的按下和释放,但不能拖动。是否有办法打印出EventQueue或验证是否执行或转储了PaintEvent?让我知道,谢谢。没有办法在事件队列上打印作业,至少我不知道 您确定要调用repaint()吗?请注意,调用repaint并不能保证组件将立即或以任何及时的方式重新绘制 我的猜测是,如果您正在调用repaint,问题可能是您从未放弃UI线程。如果您正在等待GUI线程而没有释放,您的GUI将永远不会刷新您可以将日志

我试图缩小我的JComponent没有重新绘制的范围。奇怪的是,我可以重新绘制鼠标的按下和释放,但不能拖动。是否有办法打印出EventQueue或验证是否执行或转储了PaintEvent?让我知道,谢谢。

没有办法在事件队列上打印作业,至少我不知道

您确定要调用repaint()吗?请注意,调用repaint并不能保证组件将立即或以任何及时的方式重新绘制


我的猜测是,如果您正在调用repaint,问题可能是您从未放弃UI线程。如果您正在等待GUI线程而没有释放,您的GUI将永远不会刷新

您可以将日志添加到应用程序中。考虑使用


这里的讨论也很有趣。

您能给我们一个引起您问题的代码的简化版本吗?理想情况下,我们可以在本地编译和运行一个版本。您的代码中可能有一个bug。我同意上面irfy的建议,向我们展示您的代码。我在paintComponent方法中完成了println,这有时会有所帮助,但希望在paint或paintComponent方法中没有程序逻辑,因此,我认为您最好调试其他方法。您可以始终将自己的EventQueue推送到事件类、源等的控制台,该队列覆盖dispatchEvent方法并执行Syserr。