JavaFX将TextFlow转换为String

时间:2017-04-23 13:52:01

标签: java javafx

我试图在Java中将TextFlow转换为String

TextFlow flow = new TextFlow();
Text t1 = new Text(visibility.get(attribute.getVisibility()));
Text t2 = new Text(attribute.getName());
t2.setUnderline(true);
Text t3 = new Text(" : " + attribute.getType());
flow.getChildren().addAll(t1, t2, t3);

这是我制作TextFlow的方式,我试图将其转换为一个字符串,其中所有三个Text项目彼此相邻。我该怎么做? toString()无效。

2 个答案:

答案 0 :(得分:1)

TextFlow s不支持此功能。您需要通过连接text类型子项的所有Text属性来自行实现:

StringBuilder sb = new StringBuilder();
for (Node node : flow.getChildren()) {
    if (node instanceof Text) {
        sb.append(((Text) node).getText());
    }
}
String fullText = sb.toString();

答案 1 :(得分:0)

此实用程序方法可能有效。

public static String getStringFromTextFlow(TextFlow tf) {
    StringBuilder sb = new StringBuilder();
    tf.getChildren().stream()
            .filter(t -> Text.class.equals(t.getClass()))
            .forEach(t -> sb.append(((Text) t).getText()));
    return sb.toString();
}