如何使用Java将图像加载到JPanel中

如何使用Java将图像加载到JPanel中,java,swing,Java,Swing,我想使用图像作为JPanel的背景。 它需要从相对文件路径加载。 我当前的代码不起作用。任何帮助都将不胜感激。因此无法发表评论(需要50次重复),但您的文件路径完全错误 你需要像这样的东西 new File("C:/Users/"Insert Username"/Desktop/workspace/Java/BSC_Project/Application/src/resources/background.jpg") 除非我不在你的计算机上,所以你需要找出你自己的文件路径,这将假设你的工作区

我想使用图像作为JPanel的背景。 它需要从相对文件路径加载。

我当前的代码不起作用。任何帮助都将不胜感激。

因此无法发表评论(需要50次重复),但您的文件路径完全错误

你需要像这样的东西

new File("C:/Users/"Insert Username"/Desktop/workspace/Java/BSC_Project/Application/src/resources/background.jpg")

除非我不在你的计算机上,所以你需要找出你自己的文件路径,这将假设你的工作区文件夹在你的桌面上,而它几乎肯定不是,你明白吗?

如果你想让你的代码有一个面板,这就是你要做的

private void createBackground() {
    try {
        BufferedImage backgroundImage = ImageIO.read(new File("C:/Users/Developer/workspace/Java/BSC_Project/Application/src/resources/background.jpg"));
        JPanel panel = new JPanel();
        JLabel background = new JLabel(new ImageIcon(backgroundImage));
        panel.add(background);
        this.add(panel);
    } catch(IOException e) {
        System.out.println(e.toString());
    }
}
但在你的情况下,我觉得你需要一个帧背景作为图像。。。您可以设置图像背景,对于该背景,您可以尝试以下代码

JFrame f = new JFrame ("SettingBackGround");
    try{
        f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("Med.jpg")))));
    }catch (IOException e){
        System.out.println("Image Doesnt Exist");
    }
    f.setVisible(true);
    f.setResizable(false);
    f.pack();
}
}

不过,我希望这能有所帮助。

    public WelcomeView() {
    initComponents();
    try {
        image = ImageIO.read(new File("C:\\Users\\Developer\\workspace\\Java\\BSC_Project\\Application\\src\\application\\resources\\background.png"));
    } catch (IOException ex) {
        System.err.println(ex.toString());
    }
}

    private BufferedImage image;

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(image, 2, 0, null); // see javadoc for more info on the parameters            
}

你说的“不工作”是什么意思。有什么问题吗?请阅读此sscce。这不是相对路径。要使用相对路径,您需要知道进程的当前路径是什么。注意,这与程序的路径不同。图像没有加载到JPanel中。可能是1-的副本,不要硬编码绝对路径。您永远不知道映像在其他机器上的位置。阅读Swing教程中的部分,了解更好的方法。另外,请查看页面右侧相关标题下的问题。换句话说,在提问之前先搜索论坛。是的,我理解。我会更新路径,然后再联系你。谢谢你的建议。我有一个扩展JPanel的课程。在构造函数中,我调用了一个名为“createBackground”的函数。哦,我明白了,那么纪元是什么?试试我的第二个代码,看看它能做什么。:)我有一个扩展JPanel的类。该类在JTabbedPane中使用。该类有一个名为“createBackground”的函数。在这个函数中,我想在JPanel中显示一个图像。如果不看到,很难想象这一点,但是你可以尝试在我的注释中添加代码,并将JPanel而不是框架放在其中,然后看看它是否工作。。只要试一下代码就可以了。它打印背景图像。
    public WelcomeView() {
    initComponents();
    try {
        image = ImageIO.read(new File("C:\\Users\\Developer\\workspace\\Java\\BSC_Project\\Application\\src\\application\\resources\\background.png"));
    } catch (IOException ex) {
        System.err.println(ex.toString());
    }
}

    private BufferedImage image;

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawImage(image, 2, 0, null); // see javadoc for more info on the parameters            
}