我试图在Java的JFrame
GUI中显示图像。我已经从资源文件成功加载了图像,并且能够在JOptionPane
中显示图像。这是通过在构造函数中使用包含图像图标的JLabel
实现的。尝试将此图像添加到JPanel
时,不会显示任何内容。
JLabel imgLabel1 = new JLabel(new ImageIcon(tsr.getTileImage(1,1)),JLabel.CENTER);
jpnDisplay.add(imgLabel1);
tsr是我的自定义代码,用于从tileset获取子图像。返回的图像类型为
BufferedImage
。我注意到的一件事是,如果我在
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
之前显示JOptionPane
,否则我的JFrame
不会重新绘制。如图所示。它还仅绘制JOptionPane
中显示的相同实例。其他要绘制的图像将被忽略。原因尚不清楚。 最佳答案
您必须继承JPanel的子类,并重写redraw
方法以绘制图像。