【发布时间】:2014-08-22 05:20:54
【问题描述】:
当我将一些文本动态附加到 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)添加的文本未正确包装。我该如何解决这个问题。谢谢。
【问题讨论】:
-
使用标签而不是文本。它有一个可包装的方法:docs.oracle.com/javafx/2/ui_controls/label.htm
-
@Perneel 感谢您的回复。是的,当我们使用启用换行的标签时,将不会显示剩余文本,标签将仅显示剩余文本的一些点(abc dadad ...)。当我们为 Text 控制器的 setWrappingWidth() 方法设置值时,这将正确显示结果,但它会覆盖 GridPane 中向下行上显示的文本行。连我设置rowSpan值的问题也没有解决。
-
嗯,它真的必须在网格窗格中吗?如果没有,您是否可以尝试使用图像和标签为每一行创建一个 HBox,并将所有这些 HBox 对象放在一个 VBox 中。如果需要,让 HBox 自动增大大小(垂直)。 GridPane 可能(在我看来)难以调整大小。
-
@Perneel 非常感谢您的宝贵回答。是的,正如您提到的,VBox 很好,但似乎必须为 VBox 设置一些间距。我已经完成了您的评论但错误地撤消了它然后不幸的是系统不允许(“您已经撤消了您的投票;您不能再次对其进行投票”)再次对其进行投票:(。对此感到抱歉。祝您玩得愉快!谢谢。
-
别担心,我很高兴该评论对您有所帮助。这是最重要的:)