我的程序在列表中设置了卡片的“卡片组”,我希望能够获取图像,找到解析它的路径以获取图像名称中的信息。
这将创建数组
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();
答案 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;
}
}