我试图了解如何使用 Swing 进行绘画。为此,我一直在阅读 Oracle 教程:http ://docs.oracle.com/javase/tutorial/uiswing/painting/step3.html
我的问题很简单:为什么对同一函数(重绘)的两次调用具有不同的行为?UI Delegate 是如何在之前绘制的矩形上绘制背景,但在新区域上绘制一个新矩形?我在paintComponent() 上没有看到任何特殊原因。
我还阅读了http://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html试图了解情况。似乎与组件的 opaque 属性有某种联系。在我们创建一个新的矩形后这个属性是否会改变,所以它是真的(因此,如前所述,ui.update() 会将它设置为背景颜色)。为什么paintComponent() 没有在那里绘制一个新的矩形?