gpt4 book ai didi

java - 再次调用paintComponent

转载 作者:行者123 更新时间:2023-12-01 23:12:58 25 4
gpt4 key购买 nike

我创建了一个 ImagePanel 类,它获取 ImageIcon 对象并将其绘制为显示面板。

import javax.swing.JPanel;
import javax.swing.ImageIcon;
import java.awt.Graphics;

class ImagePanel extends JPanel {
private ImageIcon img;

public ImagePanel(ImageIcon img) {
this.setImage(img);
}

public void setImage(ImageIcon img){
this.img = img;

}

@Override
public void paintComponent(Graphics g) {
if(img instanceof ImageIcon)
g.drawImage(img.getImage(), 0, 0, this.getWidth(), this.getHeight(), null);
}
}

但问题是当我更改 img 时,它不会在面板上显示,直到我更改帧大小。我该如何更新它?

编辑:repaint() 不会清除面板上的最后一个图像。

最佳答案

通常,您只需要在 setImage 方法中调用 repaint 即可。

您应该调用 super.paintComponent 以防止在渲染过程中引入绘画伪影的任何可能性。

您应该考虑重写getPreferredSize,以确保组件在大多数布局管理器下正确布局。这应该反射(reflect) img 的大小。

除非您有其他原因,否则您可以直接使用 JLabel

关于java - 再次调用paintComponent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com