Java 向自定义绘制的JPanel添加图像

Java 向自定义绘制的JPanel添加图像,java,image,swing,Java,Image,Swing,我试图将图像添加到我的JPanel。 首先,我将图像(.png)拖到项目文件夹中。 然后我输入了下面的代码,但是没有显示图像,只有黑色背景 GamePanel 游戏 在Eclipse中对此进行了测试-代码与位于project目录(不在src目录)中的“space ship.png”一样工作 1)应用程序资源在部署时将成为嵌入式资源,因此现在就开始像访问一样访问它们是明智的。必须通过URL而不是文件访问。有关如何形成URL的信息,请参见。2) 请对代码和代码片段、结构化文档(如HTML/XML或输

我试图将图像添加到我的
JPanel
。 首先,我将图像(.png)拖到项目文件夹中。 然后我输入了下面的代码,但是没有显示图像,只有黑色背景

GamePanel
游戏

在Eclipse中对此进行了测试-代码与位于project目录(不在src目录)中的“space ship.png”一样工作


1)应用程序资源在部署时将成为嵌入式资源,因此现在就开始像访问一样访问它们是明智的。必须通过URL而不是文件访问。有关如何形成URL的信息,请参见。2) 请对代码和代码片段、结构化文档(如HTML/XML或输入/输出)使用代码格式。为此,选择文本并单击邮件发布/编辑表单顶部的
{}
按钮。“我将图像拖到项目文件夹”。。。听起来您正在使用IDE。日食?上网本?IntelliJ?知道哪一个可能有用。IDE不能从项目根目录运行应用程序,而是从子文件夹运行。或者,您可能已将图像拖到“src”文件夹中,而应用程序不是从该文件夹运行的。只要映像位于正确的位置,代码看起来就可以工作(至少在打包部署之前是这样)。首先感谢ppl和im的帮助使用eclipseposted代码可以工作-检查映像是否在项目文件夹中,是否可读,是否拼写正确,是否真的是PNG。还要检查应用程序是否正在项目文件夹中运行。如果
i.getIconHeight()
返回-1图标未找到/加载“first thanks for help ppl”提示:添加@AJNeufeld(或任何人,
@
很重要)以通知此人新的评论。顺便说一句,你有没有按照我建议的方式去做?一些IDE会在项目运行时自动对其进行Jar。使用URL的方法可以使用Jar或松散资源,只要路径正确。只有当资源不在Jar中时,才能通过文件路径加载映像。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class GamePanel extends JPanel{
    private ImageIcon i;

    public GamePanel(){
        setBackground(Color.BLACK);
        setPreferredSize(new Dimension (1080, 720));    
        i = new ImageIcon("space-ship.png");
    }//end constructor

    public void paintComponent (Graphics g) {
          super.paintComponent (g);
          i.paintIcon(this, g, 300, 300);
       }
}//end class
import java.awt.Dimension;

import javax.swing.JFrame;

public class game {

    public static void main(String[] args) {

        JFrame frame = new JFrame("space ship game");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setPreferredSize(new Dimension(1080,720));
        frame.add(new GamePanel());
        frame.setVisible(true);
        frame.pack();

    }//end main

}//end class