Java 将背景图像放入JFrame

Java 将背景图像放入JFrame,java,swing,jframe,Java,Swing,Jframe,好了,现在我已经把框架装饰好了。。(谢谢你们)我正试着给相框放一个背景图像。但当我运行它时,它显示的只是一个空白框。 怎么了?如何更正?您可能没有在正确的位置查找图像。如果要将图像作为文件查找(当前正在尝试查找),则需要相对于用户目录进行查找,用户目录可通过System.out.println(System.getProperty(“user.dir”)找到。如果要将其作为资源查找,则需要相对于类文件位置查找它。所有这些都在这个网站上被无限地讨论和重复。请再搜索一些。 请考虑以下几点… 1.在s

好了,现在我已经把框架装饰好了。。(谢谢你们)我正试着给相框放一个背景图像。但当我运行它时,它显示的只是一个空白框。

怎么了?如何更正?

您可能没有在正确的位置查找图像。如果要将图像作为文件查找(当前正在尝试查找),则需要相对于用户目录进行查找,用户目录可通过
System.out.println(System.getProperty(“user.dir”)
找到。如果要将其作为资源查找,则需要相对于类文件位置查找它。所有这些都在这个网站上被无限地讨论和重复。请再搜索一些。

请考虑以下几点… 1.在setVisible(true)之前添加JLabel、background。实际上,将setVisible作为构造函数中的最后一行。
2.然后尝试以
getClass().getResource(imgPath)


设置图像

可能是因为图像图标在路径中找不到“fw.jpg”。这个“fw.jpg”文件位于何处?到部署时,这些资源很可能会成为一个文件。在这种情况下,必须通过
URL
而不是
File
访问资源。有关形成
URL
的方法,请参阅标签的。
import java.awt.*;
import javax.swing.*;
import java.awt.Color;
import javax.swing.JPanel;

public class FirstFrame extends JFrame {

    // FirstFrame properties

    public FirstFrame() {

        setTitle("Stacker");
        setLayout(new GridBagLayout());
        setSize(380, 650);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setUndecorated(true);
        setVisible(true);
        setResizable(true);

        JLabel background = new JLabel(new ImageIcon("fw.jpg"));
        background.setLayout(new BorderLayout());
        add(background);

    }

    public static void main(String[] args) {
        new FirstFrame();
    }
}