为什么我的图像不显示? (JAVA)

时间:2013-10-11 13:33:18

标签: java image swing jpanel paintcomponent

所以我有一个关于图像分割的项目要完成,第一阶段是让Java显示图像。

我遇到的问题是我可以出现一个窗口,但是我加载的图像不会被渲染。

如果我这样做完全错了,那么请知道。我花了整个下午寻找有关使用Java处理图像的清晰解释,但是我没有找到任何好的,清晰的资源。

我目前有两个类:主类和图像加载类。

这是我的主要课程:

import javax.swing.*;

public class LoadImageMain extends JFrame {

public static void main(String[] args) {            
    displayImage("HelloWorld.png");
}

public static void displayImage(String path) {
    JFrame frame = new JFrame("Display Image");
    LoadImage panel = new LoadImage(path);

    frame.setSize(1200, 800);
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.setContentPane(panel);
    frame.setVisible(true);
}   
}

我的第二堂课是为了渲染图像:

public class LoadImage extends JPanel {
   private Image img;

public LoadImage(String path) {
    img = getImage(path);       
}

@Override
public void paintComponent(Graphics g) {    
    super.paintComponent(g);
    g.drawImage(img, 0, 0, null);       
}

public Image getImage(String path) {
    Image tempImg = null;

    try {
        tempImg = Toolkit.getDefaultToolkit().getImage(path);
    }
    catch (Exception e) {
        System.out.println("Image not found. Error: " + e.getMessage());
    }

    return tempImg;
}
}

2 个答案:

答案 0 :(得分:4)

我认为你没有为drawImage定义观察者。

相反:

g.drawImage(img, 0, 0, null);  

g.drawImage(img, 0, 0, this);

答案 1 :(得分:2)

我认为图片未加载。检查tempImg的宽度/高度。猜猜他们是0。