无法解决图像不显示问题

时间:2017-02-22 08:47:14

标签: java swing embedded-resource

我正在尝试显示的图像未正确显示。

我正在使用ImageIO阅读,然后将其绘制。

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class imagestukje extends JPanel {

    private BufferedImage image;

    public imagestukje() {
        try {
            image = ImageIO.read(new File("images/lingo.jpg"));
        } catch (IOException e) {

        }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }
}

为什么没有显示图像?

2 个答案:

答案 0 :(得分:-1)

嗨,您应该在提出已经解决的问题之前使用搜索。

try this:

答案 1 :(得分:-1)

你可能有两个问题:

  • 未定义面板尺寸
  • 面板没有重新粉刷

您可以通过以下方式改进小组:

public class ImagePanel extends JPanel {
    BufferedImage image;
    Dimension size = new Dimension();

    public ImagePanel() {
    }

    public ImagePanel(BufferedImage image) {
        this.image = image;
        this.size.setSize(image.getWidth(), image.getHeight());
    }

    public void setImage(BufferedImage image) {
        this.image = image;
        this.size.setSize(image.getWidth(), image.getHeight());
    }

    @Override
    protected void paintComponent(Graphics g) {
        if(this.image != null) {
            g.drawImage(this.image, x, y, this);
        }

    }

    @Override
    public Dimension getPreferredSize() {
        return this.size;
    }
}

因此,在配置完UI后,您可以使用以下任何图像初始化该面板:

try {
    image = ImageIO.read(new File("images/lingo.jpg"));
    ((ImagePanel) jPanel).setImage(image);

    jPanel.invalidate();
    jPanel.repaint();
} catch (IOException e) {

}