它在TextFlow的OpenJDK示例中说它可以将任意节点作为子节点,例如按钮。我想知道WebView是否可能是一个可能的孩子?如果是这样,那么我一定是做错了。当我将它添加到TextFlow时,WebView只占用空间,但不显示任何内容。我尝试过的内容包括简单的HTML网页,以及YouTube等服务中的视频。
由于此控件相当新,我无法在线找到现有用例。
如果你想知道为什么我想要这个。我有一个显示丰富内容的ListView。如果TextFlow能够显示任何节点,那么它将为我想要在ListView上显示的不同类型创建多个扩展类(例如视频,格式化文本,HTML - 这些我已经做过,并且它们正常工作),我只需管理TextFlow的孩子就可以轻松管理内容。
感谢。
答案 0 :(得分:2)
是的,你可以。请注意,网页视图将使用其baselineOffset
进行布局,这不适合在TextFlow
中使用(我认为会发生什么,它的底边将与底边对齐)文本,它被剪切到文本行的高度。)你可以通过将其包装在Group
中来解决这个问题:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.TextFlow;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class WebViewInTextFlow extends Application {
@Override
public void start(Stage primaryStage) {
TextFlow flow = new TextFlow();
WebView webView = new WebView();
webView.getEngine().getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> System.out.println(newState));
webView.getEngine().load("http://stackoverflow.com/questions/31353921/is-webview-embeddable-in-textflow/31357609#31357609");
flow.getChildren().addAll(new Text("Some text"), new Group(webView), new Text("Some more text"));
primaryStage.setScene(new Scene(flow, 800, 800));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}