WebView "embeddable" 在 TextFlow 中吗?

Is WebView "embeddable" in TextFlow?

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

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

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

轻松管理内容

谢谢。

是的,你可以。请注意,Web 视图将使用其 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("");


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