我有一个要在 JFrame 上绘制的图像。图像的尺寸取决于 JFrame 的尺寸。
JFrame 的绘制频率明显高于 JFrame 的实际大小。因此,我将图像重新调整大小,然后存储在组件调整大小事件中,并且只在 draw 方法中绘制调整大小的图像。
//called on componentResized
private void scaleImage(){
if((this.getHeight() * this.getWidth()) != 0)
scalledBackGroundImage = backGroundImage.getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_FAST);
else
scalledBackGroundImage = null;
}
@Override
public void paint(Graphics g){
if(scalledBackGroundImage != null)
g.drawImage(scalledBackGroundImage, 0, 0, this);
super.paint(g);
}
但是,我似乎在重绘组件时在绘制之后调用了 re-size 事件。因此显示的图像是前一帧大小的图像。这确实成为最大化或最小化等操作的问题。
我正在寻找一种在调用paint 之前检测JFrame 重新调整大小的方法。(我知道我可以在重新调整大小时调用 repaint() 但在重新调整大小时要求组件绘制两次似乎有点粗鲁)
谢谢你的帮助。