0

它在 TextFlow 的 OpenJDK 示例中说它可以将任意节点作为子节点,例如 Button。我想知道 WebView 是否可以成为一个可能的孩子?如果是这样,那么我一定做错了什么。当我将它添加到 TextFlow 时,WebView 只占用空间,但什么也不显示。我尝试过的内容范围从简单的 HTML 页面到来自 YouTube 等服务的视频。

由于这个控件相当新,我无法在线找到现有的用例。

如果你想知道我为什么要这个。我有一个显示丰富内容的 ListView。如果 TextFlow 能够显示任何节点,那么它将使我免于为我想在 ListView 上显示的不同类型创建多个扩展类(例如,视频、格式化文本、HTML - 这些我已经做过,而且它们工作正常),我可以通过管理 TextFlow 的孩子轻松管理内容。

谢谢。

4

1 回答 1

2

是的你可以。请注意,Web 视图将使用它的 进行布局baselineOffset,这不适合在 a 中使用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);
    }
}

在此处输入图像描述

于 2015-07-11T13:20:44.063 回答