java - 从不同包中的类加载包内的 Java 图像

标签 java image bufferedimage

我有一个名为 MyProject 的 Java 项目。我有几个不同的包(为了这个问题的目的保持名称简单),如下所示:

src/PackageA
src/PackageA/PackageAa
src/PackageA/PackageAa/PackageAaa
src/PackageB
src/PackageB/PackageBa
src/PackageB/PackageBa/PackageBaa

我有课

src/PackageA/PackageAa/PackageAaa/MyJavaFile.java

我有一张图片

src/PackageB/PackageBa/PackageBaa/MyImage.png

MyJavaFile.java 中,我想声明一个 MyImage.png 的图像对象

Image img = new Image(....what goes here?...)

我该怎么做?

最佳答案

您可以调用 Class.getResource 并指定以 / 开头的路径,或者 ClassLoader.getResource 而不必理会 /:

URL resource = MyJavaFile.class
      .getResource("/PackageB/PackageBa/PackageBaa/MyImage.png");

或:

URL resource = MyJavaFile.class.getClassLoader()
      .getResource("PackageB/PackageBa/PackageBaa/MyImage.png");

基本上 Class.getResource 将允许您指定与类相关的资源,但我不认为它允许您使用“..”等目录导航。

当然,如果你知道正确包中的类,你可以使用:

URL resource = SomeClassInPackageBaa.class.getResource("MyImage.png");

(我假设您可以将 URL 传递给相关的 Image 构造函数。Class 上还有 getResourceAsStream ClassLoader。)

关于java - 从不同包中的类加载包内的 Java 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12153590/

相关文章:

CSS 和图像错误 - 不显示图像

Android 布局图像显示在表格行的错误位置

java - 将组件绘制到 BufferedImage 会导致显示损坏

java - 提取 int 中的每个数字

Java - 如何遍历 ArrayList 以添加元素?

java - 设置正在运行的线程的属性

java - 裁剪图像的透明边缘

java - Java中没有堆栈跟踪的异常

c# - 如何使用 ffmpeg 调整图像大小

java - PaintComponent(g) 不缩放 BufferedImage?