在javagui中绘制图像

在javagui中绘制图像,java,image,swing,user-interface,Java,Image,Swing,User Interface,我试图在Java的JFrameGUI中显示一个图像。我已成功从资源文件加载图像,并能够在作业窗格中显示图像。这是使用构造函数中包含图像图标的JLabel实现的。尝试将此图像添加到JPanel时,不显示任何内容 JLabel imgLabel1 = new JLabel(new ImageIcon(tsr.getTileImage(1,1)),JLabel.CENTER); jpnDisplay.add(imgLabel1); tsr是我从tileset中获取子图像的自定义代码。返回的图像类型为

我试图在Java的
JFrame
GUI中显示一个图像。我已成功从资源文件加载图像,并能够在
作业窗格中显示图像。这是使用构造函数中包含图像图标的
JLabel
实现的。尝试将此图像添加到
JPanel
时,不显示任何内容

JLabel imgLabel1 = new JLabel(new ImageIcon(tsr.getTileImage(1,1)),JLabel.CENTER);
jpnDisplay.add(imgLabel1);
tsr是我从tileset中获取子图像的自定义代码。返回的图像类型为
buffereImage

我注意到的一件事是,如果我在
JOptionPane
中显示图像,然后将其添加到
JPanel
中,就会显示图像。我不确定这是为什么

JLabel imgLabel1 = new JLabel(new ImageIcon(tsr.getTileImage(1,1)),JLabel.CENTER);
JOptionPane.showMessageDialog(null, imgLabel1,"Label",-1);
jpnDisplay.add(imgLabel1);`enter code here
--编辑--


在玩弄了我的代码之后,我发现我的问题不是我试图显示图像的方式,而是出于某种原因,我的
JFrame
没有重新绘制,除非在显示
JFrame
之前显示了
JOptionPane
。它还只绘制在
JOptionPane
中显示的相同实例。任何其他要绘制的图像都将被忽略。原因尚不清楚。

您必须对JPanel进行子类化,并覆盖
重画
方法来绘制图像。

如果我在JOptionPane中显示图像,则将其添加到JPanel中,图像将显示出来。这里出了什么问题?在GUI上显示图像的唯一方法是,在将图像添加到JPanel之前,它是否已显示在JOptionPane中。问题是,我必须先显示图像,然后才能显示图像。你的意思是没有
JOptionPane.showMessageDialog(null,imgLabel1,“Label”,-1)此行
jpnDisplay.add(imgLabel1)将无效?是。这是使这更令人困惑的部分。为了更快地获得更好的帮助,请发布一个。你能提供一些细节吗?我不熟悉Java中的绘图方法。我的大学课程主要集中在数据结构和远程通信。检查本教程:然后使用redraw提供的Graphics2D的drawImage(您需要将图形转换为Graphics2D)谢谢您的教程。这将大有帮助。另外,为了清晰起见,我编辑了你的答案,加入了链接。教程很棒,但它并没有解决我的问题。它确实澄清了问题所在。这不是我缺乏技能,而是别的原因。子类化JPanel不起作用,除非我先做了一个JOptionPane(与JLabel相同)。仍然不清楚的原因是设置图像后是否调用了面板方法
repaint()
invalidate()