当前位置: 首页 > 知识库问答 >
问题:

PNGs不显示在JPanel上

阎星河
2023-03-14

我有一个扩展JFrame的类。它使用以下代码将180个图像加载到数组中

ImageIO.read((getClass().getClassLoader().getResourceAsStream("render/"+constructImageFilename(i))));
public class ImagePanel extends JPanel{
    private BufferedImage img; //This is the image that the ImagePanel contains.
    public ImagePanel() {
       super();
    }
    public void setImage(BufferedImage i) {img=i;} //Mutator for the image.
    public BufferedImage getImage() {return img;} //Accessor for the image.
    public void paint(Graphics g) {
        super.paint(g); //Paint the normal JPanel stuff.
        ((Graphics2D)g).drawImage(img,null,0,0); //Draw the image.
    }
}

更新:我尝试使用一个JLabel而不是我的ImagePanel类。JLabel似乎也有同样的问题。当我使用JPEG时,它会显示,但当我使用PNG时,它什么也不显示。

共有1个答案

萧琛
2023-03-14

当加载的图像是JPEG时,同样的程序可以很好地工作,但是如果图像是PNG,则图像不会下降

加载.jpg或.png文件的代码没有区别。如果路径正确,则文件不会损坏,应该加载。

为什么要创建ImagePanel。您的绘画代码正在绘制图像的原始尺寸。只需使用带有ImageIcon的JLabel即可,无需自定义绘画。

 类似资料:
  • 我有一个JTextArea,它位于JScrollPane中,而JScrollPane又位于JPanel中,而JTextArea又位于JTabbedPane的Tab中。 我知道文本被添加到我的JTextArea中,但是当我在选项卡之间移动时,JTextArea是不可见的。要阅读文本,我必须选择JTextArea中的文本,然后将JTextArea的背景设置为白色。如果我不选择,我什么也看不到。 下面是

  • 我直接从书上抄了这些例子。代码应该在JFrame上绘制一些东西,但没有显示任何东西(除了JFrame),这里是带有main方法的类 下面是JPanel的一个子类

  • 问题内容: 在JPanel上显示jpg图像(从本地文件夹加载)的最合适的图像类型是什么? 干杯。 问题答案:

  • 我知道同样的问题已经被问过很多次了,但是我似乎真的没有在我的代码中发现阻碍JPanel类型的对象显示在JFrame中的错误。下面是扩展JFrame的类的构造函数: 当我运行main方法(这里没有显示)时,它只显示框架和按钮。如果有人能在这方面给点提示,我会非常感谢的。

  • 问题内容: 这是一个非常简单的程序,我已尽力而为,但JPanel并未提供背景图片。我只希望面板上有一个简单的背景图像。 这是我的代码: 提前致谢 问题答案: 更换 与

  • 有人能说出为什么组合框没有显示?我有一个控制器: 和视图 由于TestController中的setLayout(null),我看不到组合框。如果我将add(cgview.comboBox)添加到我的TestContoller()中,使其看起来如下所示: 比我能看到的还要多。有人能说出原因吗? 所以我的解决方案是始终在TestController中添加组件,或者将TestController作为a