获取已设置并转换为字符串的ArrayList <img/>的路径

时间:2019-05-11 15:58:03

标签: image javafx arraylist

我的程序在列表中设置了卡片的“卡片组”,我希望能够获取图像,找到解析它的路径以获取图像名称中的信息。

这将创建数组

    List<Image> mainDeck = new ArrayList<Image>();

然后加载图像

    public List load(List<Image> newDeck) {
        count = 0;
        for (int i = 0; i < 4; i++) {
            for (int k = 0; k < 10; k++) {
                newDeck.add(new Image("images/" + prefix.get(i) + "" + (k + 1) + ".png"));
                count++;
            }// end number card for loop
            for (int l = 0; l < 3; l++) {
                newDeck.add(new Image("images/" + prefix.get(l) + "" + prefixFace.get(l) + ".png"));
                count++;
            }// end face card for loop
        }// end deck for loop

然后调用它,并用完美工作的图像填充它,我想创建一个填充有String的匹配数组,这些Strings保存匹配Image数组的路径。 图片的名称为“ c1.png”,“ c2.png”等,我只需要路径名称中的数字即可

一旦获得数组,我就应该能够解析数据以获取数字。 任何帮助将不胜感激。

使用get url时,出现错误,这是该代码

        for (Image card : mainDeck){
        String path = card.getUrl();
        String name = path.substring(path.lastIndexOf("/")+1, path.lastIndexOf("."));
        nameData.put(card, name);

它无法识别card.getUrl();

1 个答案:

答案 0 :(得分:0)

您不必为路径创建另一个arrayList,因为路径数据已与图像一起保存。
如果要在创建图像后检索图像的路径,则可以使用Image类中的getUrl()方法,从Image对象调用getUrl()将返回您在调用图像时创建图像的路径。构造函数,请注意,仅当您使用String作为图像路径调用Image构造函数时,该函数才有效;如果使用inputStream初始化图像,并且在获取后在Java 9中定义了它,则该函数将不起作用您可能会拆分它的路径以获取所需的有用数据,例如

Image image = new Image("file:/C:/Users/zinou/Desktop/edit.png");

String path = image.getUrl();
String name = path.substring(path.lastIndexOf("/") + 1, path.lastIndexOf("."));

System.out.println(name);

如果我要将每张卡与其路径相关联,我将使用hashmap,如

List<Image> mainDeck = new ArrayList<Image>();
//population of the list
HashMap<Image, String> nameData = new HashMap<Image, String>();
for (Image card : mainDeck) {
    String path = card.getUrl();
    String name = path.substring(path.lastIndexOf("/") + 1, path.lastIndexOf("."));
    nameData.put(card, name);
}

如果您有Java 8

您可以创建一个扩展Image类的类,并为其提供一个附加属性(URL),并为该URL添加一个吸气剂,以便您可以访问它,但随后,卡将成为您创建的新类的实例。 ,因此您可以获取它们的URL,新类可能如下所示

public class MyImage extends javafx.scene.image.Image{

    String url;

    public MyImage(String arg0) {
        super(arg0);
        url = arg0;
    }

    public String geturl() {
        return url;
    }

}