java - 如何让JavaFx TabPane标题成为WebView的站点标题?

标签 java javafx webview

我正在使用 JavaFx,并且有带有 WebView 对象的选项卡。我试图让我的选项卡标题文本来读取网页标题,就像在大多数网络浏览器中一样。当我使用“getTitle”方法时,我得到一个空标题,我认为这是因为页面尚未加载。我所做的所有研究都为我提供了一个 Android 解决方案,并且我正在寻找与桌面应用程序一起使用的东西。这就是我所拥有的。

public class WebsiteTab extends Tab {

    final static String DEFAULT_SITE = "https://google.com";

    VBox browserBox;
    WebView webView;

    public WebsiteTab() {
        super("Site One");
        webView = new WebView();
        webView.setPrefHeight(5000);

        goToSite(DEFAULT_SITE);

        browserBox = new VBox(10,webView);
        VBox.setVgrow(browserBox, Priority.ALWAYS);

        setContent(browserBox);
    }

    public void goToSite(final String site) {
        webView.getEngine().load(site);
        setText(webView.getEngine().getTitle());
    }
}

如有任何帮助,我们将不胜感激。

最佳答案

您可以将选项卡的 text 属性绑定(bind)到 Web 引擎的 title 属性。

public class WebsiteTab extends Tab {

    final static String DEFAULT_SITE = "https://google.com";

    VBox browserBox;
    WebView webView;

    public WebsiteTab() {
        super("Site One");
        webView = new WebView();
        webView.setPrefHeight(5000);

        textProperty().bind(webView.getEngine().titleProperty()); // bind the properties

        goToSite(DEFAULT_SITE);

        browserBox = new VBox(10,webView);
        VBox.setVgrow(browserBox, Priority.ALWAYS);

        setContent(browserBox);
    }

    public void goToSite(final String site) {
        webView.getEngine().load(site);
    }
}

这将导致 text 属性始终与 title 属性具有相同的值。换句话说,当 title 属性的值更改时,text 属性将自动更新。请注意,我在构造函数中绑定(bind)了属性,因为您只需要创建绑定(bind)一次。另请注意,绑定(bind)时您无法再手动设置 text 属性;尝试这样做将导致抛出异常。欲了解更多信息,请参阅Using JavaFX Properties and Binding .

关于java - 如何让JavaFx TabPane标题成为WebView的站点标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688585/

相关文章:

java - 如何在@RequestParam中设置默认值为LocalDateTime

java - 我应该如何将功能划分为 Java 类?

javascript - 如何使用 javascript 在 WebView 中操作本地文件中的 CSS

macos - OSX Swift webview 加载本地文件

java - 我想要一个集中的方式来控制我的按钮

JavaFX - 生成 App Jar 时不显示虚拟键盘

java - 如何将数学符号(例如 R^n)放入 Java 字符串?

JavaFX 3D 适用于超过 100 万个 Box 对象

Android Webview 在锁定屏幕上卡住

java - 用循环返回两个整数?