Получение пути ArrayList <image>, который уже установлен и преобразован в строку - PullRequest
0 голосов
/ 11 мая 2019

Моя программа устанавливает «колоду» карт в список, я хочу, чтобы можно было получить изображение, найти путь для его анализа, чтобы получить информацию, которая находится в имени изображения.

Этосоздает массив

    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

, затем он вызывается и заполняется изображениями, которые отлично работают. Я хотел бы создать соответствующий массив, заполненный строками, которыеудерживайте путь для соответствующего массива изображений.Имена изображений: «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 голосов
/ 11 мая 2019

вам не нужно создавать еще один arrayList для путей, потому что данные пути уже сохранены с изображениями.
если вы хотите получить путь к изображению после его создания, вы можете использовать метод getUrl () в классе Image вызов getUrl () из объекта Image вернет путь, который вы использовали для создания изображения при вызове конструктора, обратите внимание, что он будет работать, только если вы вызвали конструктор Image, используя String в качестве пути дляизображение, оно не будет работать, если вы использовали 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;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...