获取图像路径JavaFx

lip*_*inf 7 java image relative-path javafx-8

我想获取我的Image对象中加载的当前Image的路径名.

我有以下代码:

Image lol = new Image("fxml/images/bilhar9.png");
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

lol.getPath();
Run Code Online (Sandbox Code Playgroud)

应该返回"fxml/images/bilhar9.png",我发现方法impl_getUrl()但不推荐使用.

我该怎么办?

jew*_*sea 13

您无法通过未弃用的API从映像获取映像路径,因为Java 8中不存在此类API.您可以使用已弃用的API,并在删除已弃用的API时在将来的Java版本中破坏应用程序的风险 - 这是不可取的.你可以创建一个功能请求做出的getURL()在图像的公共API,但不保证会被接受,即使是,也只是把它做成后来的Java版本.

图像不是最终的,所以我建议如下:

class LocatedImage extends Image {
    private final String url;

    public LocatedImage(String url) {
        super(url);
        this.url = url;
    }

    public String getURL() {
        return url;
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样创建你的图像:

Image image = new LocatedImage("fxml/images/bilhar9.png");
Run Code Online (Sandbox Code Playgroud)

然后你可以通过以下方式访问网址:

String url = image instanceof LocatedImage 
        ? ((LocatedImage) image).getURL() 
        : null;
Run Code Online (Sandbox Code Playgroud)

不是一个很好的解决方案,但可能足以满足您的需求.