我制作了一个简单的用户界面,但是当我在 Mac 上运行相同的代码时,图像没有出现。我已经在 Windows 上试过了;它有效,但在 Mac 上却无效。我知道 File.separator,但在 ImageIcon 中它不应该是这种情况,因为相对路径正在转换为 URL,如果我没记错的话,URL 可以在所有平台上使用,因为它使用正斜杠。我真的很困惑为什么它不能在 Mac 上运行。 JLabel lblDesigniteLogo = new JLabel(); ImageIcon keyImage = new ImageIcon(this.getClass().getClassLoader().getResource("Images/designite_logo.png")); lblDesigniteLogo.setIcon(keyImage); GridBagConstraints gbc_lblDesignitelogo = new GridBagConstraints(); gbc_lblDesignitelogo.fill = GridBagConstraints.HORIZONTAL; gbc_lblDesignitelogo.insets = new Insets(0, 0, 5, 0); gbc_lblDesignitelogo.gridx = 2; gbc_lblDesignitelogo.gridy = 0; frame.getContentPane().add(lblDesigniteLogo, gbc_lblDesignitelogo);
1 回答
暮色呼如
TA贡献1853条经验 获得超9个赞
问题实际上是由于图像的路径。从包中加载资源时,您的路径应以/. 而不是"Images/designite_logo.png",应该是"/Images/designite_logo.png"。当然,图像应该放在正确的包中。你可以自己测试一下:
public class Main {
public static void main(String[] args) {
URL imageUrl = Main.class.getResource("com/test/images/img.jpg");
System.out.println(imageUrl == null); //Prints true
imageUrl = Main.class.getResource("/com/test/images/img.jpg");
System.out.println(imageUrl == null); //Prints false
}
}
项目结构是:
添加回答
举报
0/150
提交
取消