在java框架上添加图像

在java框架上添加图像,java,eclipse,swing,jframe,embedded-resource,Java,Eclipse,Swing,Jframe,Embedded Resource,我在实践中遇到了这个问题,框架没有显示文件夹中的图像,有人可以告诉我为什么?我添加了项目的层次结构 package frame; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class Frame { Frame() { final JFrame login = new JFrame(); login.setTitle("Title")

我在实践中遇到了这个问题,框架没有显示文件夹中的图像,有人可以告诉我为什么?我添加了项目的层次结构

package frame;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Frame {
  Frame() {
    final JFrame login = new JFrame();
    login.setTitle("Title");
    login.setLayout(null);
    login.add(new JLabel(new ImageIcon("Images/images.png")));
    login.setVisible(true);
    login.setSize(500, 400);
    login.setLocationRelativeTo(null);
}

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

}

不要将包用于资源。相反,创建一个名为“images”的非源文件夹,并将其移动到那里


之后,使用路径“images/images.png”

从项目中获取资源,使用
URL
而不是
String
路径。例如:

URL resource = Frame.class.getResource("/Images/images.png");
ImageIcon icon = new ImageIcon(resource);
JLabel lbl = new JLabel(icon);
也读

也不要使用null
LayoutManager
,在这种情况下,您需要借助
setBounds()
方法指定组件的边界。

如果您没有合理的理由,请避免使用setLayout(null)。删除下面的代码。图像将被显示

如果仍然必须使用空布局,则必须设置组件的宽度和高度及其x和y位置

   login.setLayout(null);

在src内部还是外部?您认为@MaximShoustin?在部署时,这些资源很可能会成为一种资源。在这种情况下,必须通过
URL
而不是
File
访问资源。请参阅标签,以了解形成
URL
的方法。您还应该使用Swing实用程序的invokeLater方法来安排Frame()构造函数在EDT上运行-这将确保GUI在后台进程启动时不会卡住,如登录+1,但我们已经使用此OP(多次)完成了这一过程. 你可以把马牵到河边,但你不能强迫他们喝水。