Java 将paintComponet称为agian
我创建了一个ImagePanel类,该类获取一个ImageIcon对象并将其绘制为ShowPanelJava 将paintComponet称为agian,java,swing,Java,Swing,我创建了一个ImagePanel类,该类获取一个ImageIcon对象并将其绘制为ShowPanel import javax.swing.JPanel; import javax.swing.ImageIcon; import java.awt.Graphics; class ImagePanel extends JPanel { private ImageIcon img; public ImagePanel(ImageIcon img) { this.s
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时,它不会显示在面板上,直到我改变帧大小。我如何更新它
EDIT:repaint()不会清除面板上的最后一个img。通常,您只需在
setImage
方法中调用repaint
您应该调用super.paintComponent
,以防止在渲染过程中引入绘制瑕疵
您应该考虑重写<代码> GETApple Read St< <代码>,以确保组件在大多数布局管理器下正确布局。这应反映
img
的大小
除非有其他原因,否则您可以使用
JLabel
而不受惩罚。通常,您只需在setImage
方法中调用repaint
您应该调用super.paintComponent
,以防止在渲染过程中引入绘制瑕疵
您应该考虑重写<代码> GETApple Read St< <代码>,以确保组件在大多数布局管理器下正确布局。这应反映
img
的大小
除非有其他原因,否则您可以使用
JLabel
而不受惩罚。通常,您只需在setImage
方法中调用repaint
您应该调用super.paintComponent
,以防止在渲染过程中引入绘制瑕疵
您应该考虑重写<代码> GETApple Read St< <代码>,以确保组件在大多数布局管理器下正确布局。这应反映
img
的大小
除非有其他原因,否则您可以使用
JLabel
而不受惩罚。通常,您只需在setImage
方法中调用repaint
您应该调用super.paintComponent
,以防止在渲染过程中引入绘制瑕疵
您应该考虑重写<代码> GETApple Read St< <代码>,以确保组件在大多数布局管理器下正确布局。这应反映
img
的大小
除非您有其他原因,否则您可以使用
JLabel
我不能使用JLabel,因为我需要向它添加一些对象,并且我需要图像大小为az面板大小。我以前使用过repaint(),但它没有删除最后一个img。“您应该调用super.paintComponent
,以防止在渲染过程中引入绘制瑕疵的可能性。”+1。从听起来,这就是问题的确切原因。我不明白。我应该在哪里添加super.paintComponent(),应该使用什么参数?您可以重写一个方法,但不知道如何调用它的super?是时候回到java教程的介绍章节了:-)我不能使用JLabel,因为我需要向它添加一些对象,我需要图像大小为az面板大小。我以前使用过repaint(),但它没有删除最后一个img。“您应该调用super.paintComponent
,以防止在渲染过程中引入绘制瑕疵的可能性。”+1。从听起来,这就是问题的确切原因。我不明白。我应该在哪里添加super.paintComponent(),应该使用什么参数?您可以重写一个方法,但不知道如何调用它的super?是时候回到java教程的介绍章节了:-)我不能使用JLabel,因为我需要向它添加一些对象,我需要图像大小为az面板大小。我以前使用过repaint(),但它没有删除最后一个img。“您应该调用super.paintComponent
,以防止在渲染过程中引入绘制瑕疵的可能性。”+1。从听起来,这就是问题的确切原因。我不明白。我应该在哪里添加super.paintComponent(),应该使用什么参数?您可以重写一个方法,但不知道如何调用它的super?是时候回到java教程的介绍章节了:-)我不能使用JLabel,因为我需要向它添加一些对象,我需要图像大小为az面板大小。我以前使用过repaint(),但它没有删除最后一个img。“您应该调用super.paintComponent
,以防止在渲染过程中引入绘制瑕疵的可能性。”+1。从听起来,这就是问题的确切原因。我不明白。我应该在哪里添加super.paintComponent(),应该使用什么参数?您可以重写一个方法,但不知道如何调用它的super?是时候回到java教程的介绍性章节了:-)1)要更快地获得更好的帮助,请发布一个(最简单、完整、经过测试且可读的示例)。2) 获取示例图像的一种方法是热链接到中所示的图像。1)为了更快地获得更好的帮助,请发布一个(最小的完整测试和可读示例)。2) 获取示例图像的一种方法是热链接到中所示的图像。1)为了更快地获得更好的帮助,请发布一个(最小的完整测试和可读示例)。2) 获取示例图像的一种方法是热链接到中所示的图像。1)为了更快地获得更好的帮助,请发布一个(最小的完整测试和可读示例)。2) 例如,获取图像的一种方法是热链接到中看到的图像。