gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:31:32 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com