Java 将动态大小的矩形添加到场景中
我有一个包含字符串的列表数组列表 我通过嵌套循环将这些字符串转换成文本对象。 我有它们的高度和宽度,只是当我尝试将它们放置在场景中时,我无法指定x,y值,因此它们显示在顶部。如何在不重叠的情况下将对象放置到场景中。理想情况下,第一个对象位于场景的中心,其他对象位于周围,但只是让它们出现在场景中,这将是一个开始 这是我到目前为止所拥有的。矩形是为了让我更清楚地看到物体周围有一个边框Java 将动态大小的矩形添加到场景中,java,javafx,Java,Javafx,我有一个包含字符串的列表数组列表 我通过嵌套循环将这些字符串转换成文本对象。 我有它们的高度和宽度,只是当我尝试将它们放置在场景中时,我无法指定x,y值,因此它们显示在顶部。如何在不重叠的情况下将对象放置到场景中。理想情况下,第一个对象位于场景的中心,其他对象位于周围,但只是让它们出现在场景中,这将是一个开始 这是我到目前为止所拥有的。矩形是为了让我更清楚地看到物体周围有一个边框 TextFlow textFlow = new TextFlow(); Group group = new
TextFlow textFlow = new TextFlow();
Group group = new Group(textFlow);
Stage stage = new Stage();
Scene scene = new Scene(group, 1200, 600, Color.WHITE);
stage.setTitle("WordCloud");
Integer size = 150;
String family = "Arial";
final Rectangle redBorder = new Rectangle(0, 0, Color.TRANSPARENT);
redBorder.setStroke(Color.RED);
redBorder.setManaged(false);
Random rand = new Random(System.currentTimeMillis());
//Loop through arrayList to get each individual list
for (List e : list2) {
//System.out.println(e);
//this will decrease the font size for strings in each list
size = (size - 30);
//Random colour generator
int red = rand.nextInt(255);
int green = rand.nextInt(255);
int blue = rand.nextInt(255);
for (Object d : e) {
System.out.println(d);
Text text = new Text(x,y,(String) d);
//gives it font and size depending on index of the list
text.setFont(Font.font(family, size));
//random colour generator being used
text.setFill(Color.rgb(red, green, blue, .99));
text.setTextAlignment(TextAlignment.JUSTIFY);
textFlow.setPrefWidth(Region.USE_COMPUTED_SIZE);
textFlow.setPrefHeight(Region.USE_COMPUTED_SIZE);
textFlow.setLayoutX(scene.getWidth());
textFlow.setLayoutY(scene.getHeight());
text.boundsInParentProperty().addListener((observable, oldValue, newValue) -> {
redBorder.setLayoutX(text.getBoundsInParent().getMinX());
redBorder.setLayoutY(text.getBoundsInParent().getMinY());
redBorder.setWidth(text.getBoundsInParent().getWidth());
redBorder.setHeight(text.getBoundsInParent().getHeight());
});
group.getChildren().addAll(text, redBorder);
}
}
stage.setScene(scene);
stage.show();
}
我有更多没有添加的打包类代码,这给了我一个x,y值来打包到“bin”中,但我不确定如何将对象添加到场景中
谢谢 我试着运行你的代码来了解你在做什么以及问题出在哪里,但是你的代码不能像现在这样运行。有很多可用的布局,只需选择一个适合你需要的布局:对于更奇特的布局,你可能需要实现你自己的布局算法,但这不应该是一个太复杂的问题。但是,您没有提供所需布局的适当说明,以便我们推荐任何内容。@fabian我不确定使用哪种类型的窗格来获得所需的布局。我希望所有对象彼此相邻放置,框的边界相接触。我正在制作一个单词cloud,如果这能让你更多地了解我在追求什么?@SedrickJefferson啊,很抱歉,代码是从我的ide中获取的,其中一个列表的数组列表被传递到列表2中,我的错误。你试着使用了吗?我试着运行你的代码来了解你在做什么,以及问题是什么,但是您的代码不能像现在这样运行。有很多可用的布局,只需选择一个适合您需要的布局:对于更奇特的布局,您可能需要实现自己的布局算法,但这不应该是一个太复杂的问题。但是,您没有提供所需布局的适当说明,以便我们推荐任何内容。@fabian我不确定使用哪种类型的窗格来获得所需的布局。我希望所有对象彼此相邻放置,框的边界相接触。我正在制作一个单词cloud,如果这能让你更多地了解我在追求什么?@SedrickJefferson啊,对不起,代码是从我的ide中获取的,其中一个列表的数组列表被传递到列表2中,我的错误。你试过使用吗?