当我尝试创建JLabel时,它会完美地显示文本并在容器中正确放置,但如果我尝试将图像添加到标签中,则不会显示任何内容。
ImageIcon icon = new ImageIcon("../media/link_walk.png", "hh");
JLabel j = new JLabel("hello");
j.setIcon(icon);
p.add(j);
答案 0 :(得分:3)
如果您的应用。在Jar文件中,图像是应用程序资源,它也将位于Jar文件中。
接受ImageIcon
的{{1}}构造函数假设String
表示文件路径/名称。无法在Jar中的资源上建立String
对象。对于Jar中的资源,有必要通过File
访问它们。
要获得Jar中的URL
内容,请使用类似..
URL
然后使用接受URL urlToImage = this.getClass().getResource("/media/link_walk.png");
// Check the URL!
System.out.println("urlToImage is " + urlToImage);
的{{1}}构造函数。
答案 1 :(得分:1)
默认情况下,JLabel不是不透明的,因此除非通过setOpaque(true)使它们变得不透明,否则不会看到背景颜色变化。此外,JLabel的首选大小取决于它所拥有的文本。