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