【问题标题】:JavaFX How to add Wrapped Text to GridPaneJavaFX 如何将换行文本添加到 GridPane
【发布时间】: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 设置一些间距。我已经完成了您的评论但错误地撤消了它然后不幸的是系统不允许(“您已经撤消了您的投票;您不能再次对其进行投票”)再次对其进行投票:(。对此感到抱歉。祝您玩得愉快!谢谢。
  • 别担心,我很高兴该评论对​​您有所帮助。这是最重要的:)

标签: java javafx-2 gridpane


【解决方案1】:

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

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

我实际上并没有尝试这些更改,但它们(或非常相似的东西)应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-31
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多