JavaFX:getChildren().addAll() 参数不适用

JavaFX: getChildren().addAll() argument not applicable

我有一个关于 JavaFX 的基本问题,但没弄明白。对于 HBox,当我对 Label 和 ImageView 使用 getChildren().addAll() 时,我收到以下消息:

The method addAll(int, Collection<? extends Node>) in the type List<Node> is not applicable for the argument (Label, ImageView[])

我不确定是什么问题。如果它是 (TextField, ImageView[]) 我可以正常使用,但它不适用于 (Label, ImageView[]).

这是我的简化代码:

ImageView[] imagesRow = new ImageView[2];
Image[] img = new Image[2];
String title = "Result";

img[0] = new Image("sample1.png", 60, 35, true, true);
img[1] = new Image("sample2.png", 60, 35, true, true);

imagesRow[0] = new ImageView();
imagesRow[1] = new ImageView();

imagesRow[0].setImage (img[0]);
imagesRow[1].setImage (img[1]);

Label label = new Label();
label.setText(title + ": ");

// Create horizontal box 
HBox box = new HBox();
box.setPadding(new Insets(20, 5 , 2, 50));
box.getChildren().addAll(label, imagesRow); // issue here

请问是什么原因导致标签和图片水平对齐? 提前致谢。

A Collection 必须是一种类型(或从继承体系中某处的共同父代继承)。

A LabelNode 的一种类型,因此您尝试作为 Collection 参数的一部分传递的任何其他内容也必须是 Node。数组显然不是。

在您的情况下,您需要使用两次调用来填充 HBox:

的子项
box.getChildren().add(label);
box.getChildren().addAll(imagesRow);

你可以毫无问题地调用 addAll(imagesRow) 的原因是因为只有一个参数,你只传递了 一个 Collection,一个数组。

通过调用 addAll(label, imagesRow),您告诉 Java 您正在传递一种类型的 Collection,但实际上您传递了一个 Node 和一个数组。