如何在屏幕上放置 2 个目录以上的图像?这是我的代码:
package mousemaze;
// Imports
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class LoadScreen extends JPanel {
private static final long serialVersionUID = 1L;
private String logoPath = "././images/snakyboLogo.png";
BufferedImage logoImage;
JLabel logoLabel;
public LoadScreen() {
try {
System.out.println(logoPath);
logoImage = ImageIO.read(new File(logoPath));
System.out.println("1");
logoLabel = new JLabel(new ImageIcon(logoImage));
System.out.println("2");
add(logoLabel);
System.out.println("End");
} catch (IOException ex) {
System.out.println("Fail");
}
}
}
但是失败了
logoImage = ImageIO.read(new File(logoPath));
所以我认为它无法在该目录中找到指定的文件。 我的文件夹结构是:
- src\mousemaze\LoadScreen.java
- src\images\snakyboLogo.png
所以我猜测这不是我在完全不同的包中指定文件的方式,那么我该怎么做呢?
最佳答案
- 问题 1 - 路径文字
.
解析为当前目录,我假设您打算使用..
. - 问题 2 - 绝对不建议使用相对路径从 Java 中读取文件。如果您的应用程序部署在您假定的结构之外的任何位置,它就会崩溃
您将通过使用资源流获得更多里程
InputStream logoStream = getClass().getResourceAsStream("/images/snakyboLogo.png");
if(logoStream != null) logoImage = ImageIO.read(logoStream);
关于Java从2个目录以上读取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008985/