DrawingPanel中刷新图片扩展了JPanel
我必须在软件底部加载一个小图标。只是为了有一个加载/确定/错误图标。正如“http://www.article.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter06/images.html”上的建议,我创建了一个扩展 JPanel 的 dwowing 面板。
class drawingPanel extends JPanel
{
Image img;
drawingPanel (Image img){
this.img = img;
}
public void paintComponent (Graphics g) {
super.paintComponent (g);
// Use the image width & height to find the starting point
int imgX = getSize ().width/2 - img.getWidth (this);
int imgY = getSize ().height/2 - img.getHeight (this);
//Draw image centered in the middle of the panel
g.drawImage (img, imgX, imgY, this);
} // paintComponent
}
我通过以下方式初始化组件:
// Grab the image.
Image img = new ImageIcon(iconPath+"ok.png").getImage();
// Create an instance of DrawingPanel
iconPanel = new drawingPanel(img);
一切正常,但在运行时我希望能够更改面板内的图标。我尝试了以下所有方法,但没有一个能够查看新图片:(
Image img = new ImageIcon(iconPath+"loading.gif").getImage();
// Create a new instance of DrawingPanel
this.iconPanel = new drawingPanel(img);
this.iconPanel.repaint();
this.iconPanel.revalidate();
this.iconPanel.repaint();
this.repaint();
this.revalidate();
我尝试了这个,因为我正在编写代码的类是包含 IconPanel 的 JPanel 的另一个扩展。任何关于为什么我无法更改图片?
谢谢, 斯特凡诺
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
首先不要以小名称开头。将
drawingPanel
重命名为DrawingPanel
。我尝试根据您的描述制作一个简单的演示,效果很好。面板中的图像正在完美变化。
我所做的更改是在
DrawingPanel
类中添加img
的 setter 方法。因此,您不必创建新的DrawingPanel
,只需使用新的 Image 调用 setImg() ,然后调用 reapint 来绘制新图像。First thing don't start class name with small name. Rename
drawingPanel
toDrawingPanel
.I have tried making a simple demo based on your description and it works fine. The image in panel is changing perfectly.
The changes I have made is add a setter method of
img
inDrawingPanel
class. So instead of creating newDrawingPanel
you just have to call setImg() with new Image and then call reapint to paint the new image.