JavaFX如何将包装文本添加到GridPane

JavaFX如何将包装文本添加到GridPane,java,javafx-2,gridpane,Java,Javafx 2,Gridpane,当我将一些文本动态附加到TextArea时,它被正确包装,如下所示: 但由于要求的改变,我不得不为每个文本(在前面)添加一些图像作为项目符号。然后我使用GridPane添加带有图像的文本,如下所示: 用于向GridPane添加组件的代码: // Set the GridPane empty gridPane.getChildren().removeAll(); // Add image with each text int index = 0; for(String des :

当我将一些文本动态附加到TextArea时,它被正确包装,如下所示:

但由于要求的改变,我不得不为每个文本(在前面)添加一些图像作为项目符号。然后我使用GridPane添加带有图像的文本,如下所示:

用于向GridPane添加组件的代码:

 // Set the GridPane empty 
 gridPane.getChildren().removeAll();

 // Add image with each text
 int index = 0;
 for(String des : descriptionsList) {

     HBox btnHb = new HBox();

     ImageView passed = new ImageView();
     passed.setImage(new Image(getClass().getResourceAsStream(GuiConstant.Image.IMAGE_PASSED)));
     btnHb.getChildren().add(passed);

     Text text = new Text(des);
     btnHb.getChildren().add(text);

     gridPane.addRow(index, btnHb);
     index++;
}

现在(使用GridPane)添加的文本没有正确包装。如何解决此问题。谢谢

您需要将文本实例上的wrappingWidth设置为相对于GridPane的宽度。您可能希望通过HBox实例间接实现这一点:


btnHub.prefWidthProperty().bind(gridPane.widthProperty();
text.wrappingWidthProperty().bind(btnHub.widthProperty().subtract(passed.widthProperty().subtract(10));


实际上,我没有尝试这些更改,但它们(或非常类似的东西)应该会起作用。

使用标签而不是文本。它有一个可包装的方法:@Perneel感谢您的回复。是的,当我们使用启用包装的标签时,它不会显示剩余文本,标签将只显示剩余文本的一些点(abc DADADAD…)。当我们为文本控制器的setWrappingWidth()设置值时方法,这将正确显示结果,但它会覆盖显示在GridPane中向下行上的文本行。即使我设置了rowSpan值问题也没有解决。嗯,它真的必须在GridPane中吗?如果不是,您是否可以尝试为带有图像和标签的每行创建一个HBox,并将所有这些HBox对象放在一个VBox中。让HBox a如果需要,自动增大大小(垂直)。网格窗格可能(在我看来)很难调整大小。@Perneel非常感谢您宝贵的回答。是的,正如您提到的,VBox很好,但它似乎必须为VBox设置一些间距。我已经修改了您的注释,但错误地撤消了它,不幸的是,系统不允许(“您已经撤消了投票;您无法再次追加投票”)再次追加投票:(.非常抱歉。祝您玩得愉快!谢谢。别担心,我很高兴评论对您有价值。这是最重要的:)