Java:在JFrame中显示图像

Java:在JFrame中显示图像,java,swing,Java,Swing,我很难链接我的“fish.png”图像,以便它可以显示在JFrame中。以下是我在网上修改的一些代码: package evolution; import java.awt.FlowLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class Image extends JFrame { public Image() {

我很难链接我的“fish.png”图像,以便它可以显示在JFrame中。以下是我在网上修改的一些代码:

package evolution;

import java.awt.FlowLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Image extends JFrame {

    public Image() {

        this.getContentPane().setLayout(new FlowLayout());
        JLabel label1 = new JLabel("Example Text");
        ImageIcon icon = new ImageIcon("fish.png");
        JLabel label2 = new JLabel(icon);

        add(label1);
        add(label2);
    }

    private static void createAndShowGUI() {

        JFrame frame = new Image();
        frame.pack();
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        createAndShowGUI(); 
    }
}
“示例文本”标签出现,因此我知道JFrame可以工作。我将相同的“fish.png”放在src文件夹(该类所在的位置)中,将其放在主文件夹(src文件夹所在的位置)中,但JFrame只显示文本标签,而不显示图像。如何正确链接此链接?

使用:

ImageIcon icon = new ImageIcon(getClass().getResource("fish.png"));

fish.png
文件放在源文件(实际上是类文件)旁边。即使包含在jar文件中,也可以这样做。

找到Eclipse存储项目文件的目录,并将图像放在该目录中。我试过并成功了。

我将fish.png与类文件放在同一个文件夹中,它给了我一个空指针异常。然后我将它复制到包中(在Eclipse中),现在它运行了,但仍然只显示文本:/也许我记错了,但我猜图片文件必须在源程序包中,而不是在输出程序包中。这意味着*.java文件在哪里,而不是*.class文件。我将映像文件复制到src文件夹、bin文件夹和包含src和bin文件夹的主文件夹中,以覆盖所有基础。仍然没有。您需要将其与该类的类文件放在同一目录中。包括包(如果有的话)。如果映像文件位于src包内,则应使用类#getResource,因为映像将不再作为文件系统中的文件进行访问,这是ImageIcon(字符串)所期望的。根据您的示例,我建议将图像与图像类一起放在evolution目录中。注意Java.awt.Image已经存在,如果不小心,它可能会混淆问题