我制作了一個簡單的用戶界面,但是當(dāng)我在 Mac 上運行相同的代碼時,圖像沒有出現(xiàn)。我已經(jīng)在 Windows 上試過了;它有效,但在 Mac 上卻無效。我知道 File.separator,但在 ImageIcon 中它不應(yīng)該是這種情況,因為相對路徑正在轉(zhuǎn)換為 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條經(jīng)驗 獲得超9個贊
問題實際上是由于圖像的路徑。從包中加載資源時,您的路徑應(yīng)以/. 而不是"Images/designite_logo.png",應(yīng)該是"/Images/designite_logo.png"。當(dāng)然,圖像應(yīng)該放在正確的包中。你可以自己測試一下:
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
}
}
項目結(jié)構(gòu)是:
添加回答
舉報
0/150
提交
取消