在FXML中传递数组参数

问题描述 投票:0回答:1

我正在尝试创建一个存储图像列表的自定义控件。理想情况下,在FXML文件中,我可以通过传递一个参数来实例化我的控件,该参数是到所述图像的文件路径的列表。

我已经获得了从FXML加载的控件,在这里是构造函数

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

这里是加载它的FXML

<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个单独值的列表?

java javafx fxml
1个回答
1
投票

一种类似的方法将与只读列表属性一起使用,但是这种fxml没有提供某些信息:

  • 应使用哪个List实现?
  • [其中有多少个字符串以及在何处分开;如何判断您是否想要包含"1.png,\n 2.png,\n 3.png""1.png,", "\n 2.png,\n 3.png"或其他内容的列表?

可以做这样的事情,但是您需要修改fxml的结构:

<?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>
© www.soinside.com 2019 - 2024. All rights reserved.