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 Label
是 Node
的一种类型,因此您尝试作为 Collection
参数的一部分传递的任何其他内容也必须是 Node
。数组显然不是。
在您的情况下,您需要使用两次调用来填充 HBox
:
的子项
box.getChildren().add(label);
box.getChildren().addAll(imagesRow);
你可以毫无问题地调用 addAll(imagesRow)
的原因是因为只有一个参数,你只传递了 一个 Collection
,一个数组。
通过调用 addAll(label, imagesRow)
,您告诉 Java 您正在传递一种类型的 Collection
,但实际上您传递了一个 Node
和一个数组。
我有一个关于 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 Label
是 Node
的一种类型,因此您尝试作为 Collection
参数的一部分传递的任何其他内容也必须是 Node
。数组显然不是。
在您的情况下,您需要使用两次调用来填充 HBox
:
box.getChildren().add(label);
box.getChildren().addAll(imagesRow);
你可以毫无问题地调用 addAll(imagesRow)
的原因是因为只有一个参数,你只传递了 一个 Collection
,一个数组。
通过调用 addAll(label, imagesRow)
,您告诉 Java 您正在传递一种类型的 Collection
,但实际上您传递了一个 Node
和一个数组。