2017-04-23 32 views
1

我试图在Java中将TextFlow转换为StringJavaFX将TextFlow转换为字符串

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()不起作用。

回答

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(); 
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(); 
}