如何使 ImageIcon 在所有平台上工作

我制作了一个简单的用户界面,但是当我在 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);


皈依舞
浏览 97回答 1
1回答

暮色呼如

问题实际上是由于图像的路径。从包中加载资源时,您的路径应以/. 而不是"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    }}项目结构是:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java