Передача параметра массива в FXML - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь создать пользовательский элемент управления, который хранит список изображений. В идеале в файле F XML я мог бы создать экземпляр своего управления, передав аргумент, представляющий собой список путей к файлам к указанным изображениям.

Я получил элемент управления для загрузки из F XML очень хорошо, вот конструктор

public Gallery(@NamedArg("images") List<String> images) {
    this.imageQueue = new PriorityQueue<>(images);
    this.load("gallery.fxml");
    this.scrollImage();
}

Вот F XML, который загружает его

<Gallery fx:id="contentPane" prefHeight="250.0" prefWidth="600.0">
      <images>
          1.png,
          2.png,
          3.png
      </images>
  </Gallery>

Загружается без проблем, но нет изображений и выполняются некоторые простые распечатки. Я вижу, что вместо создания списка с тремя значениями 1.png, 2.png, 3.png создается список с 1 значением «1». png, 2.png, 3.png "

Итак, мой вопрос: как мне получить его для создания экземпляра в виде списка с 3 отдельными значениями в нем?

1 Ответ

1 голос
/ 14 февраля 2020

Подобный подход будет работать со свойствами списка только для чтения, но есть фрагменты информации, которые не предоставляются с этим видом f xml:

  • Какую реализацию List следует использовать ?
  • Сколько существует строк и где их разделить; как определить, хотите ли вы список, содержащий "1.png,\n 2.png,\n 3.png", "1.png,", "\n 2.png,\n 3.png" или что-то еще?

Можно сделать что-то подобное, но вам нужно изменить структуру вашего f xml:

<?import java.util.ArrayList?>
<?import java.lang.String?>

...

<Gallery fx:id="contentPane" prefHeight="250.0" prefWidth="600.0">
    <images>
        <ArrayList>
          <String fx:value="1.png" />
          <String fx:value="2.png" />
          <String fx:value="3.png" />
        </ArrayList>
    </images>
</Gallery>
...