如何在加载网页时更改javaFX Web浏览器中的阶段名称?
我正在使用JavaFx创建一个web浏览器。假设我的浏览器有一个名字,我的浏览器。我希望无论何时加载网页,例如http:www.google.com,阶段名称都应该是我的浏览器-谷歌。怎么做。我已经将我的舞台名称设置为我的浏览器 这是我的HomeEngine类的构造函数如何在加载网页时更改javaFX Web浏览器中的阶段名称?,java,javafx,javafx-8,fxml,netbeans-8,Java,Javafx,Javafx 8,Fxml,Netbeans 8,我正在使用JavaFx创建一个web浏览器。假设我的浏览器有一个名字,我的浏览器。我希望无论何时加载网页,例如http:www.google.com,阶段名称都应该是我的浏览器-谷歌。怎么做。我已经将我的舞台名称设置为我的浏览器 这是我的HomeEngine类的构造函数 HomeEngine(){ WebView browser = new WebView(); WebEngine webEngine = browser.getEngine(); webEngine.load("http://g
HomeEngine(){
WebView browser = new WebView();
WebEngine webEngine = browser.getEngine();
webEngine.load("http://google.com");
}
我正在我的主类中使用这个HomeEngine类的making对象
HomeEngine browser = new HomeEngine();
我已经为我的主课阶段设置了标题作为我的浏览器
我认为根据我从评论和问题中理解的答案是非常简单的
但首先让我们了解一下问题,有时加载的网页的标题为空,这是由于两件事造成的
您试图在页面完全加载之前获取标题,因此必须在页面完全加载时放置一个侦听器,获取其标题,如下简单代码示例所示
browser.getEngine().getLoadWorker().
stateProperty().
addListener(new ChangeListener()
{
@Override
public void changed(ObservableValue observable, Worker.State oldValue, Worker.State newValue)
{
if (newValue == Worker.State.SUCCEEDED)
{
primaryStage.setTitle("My Browser : " + browser.getEngine().getTitle());
}
}
});
正如您所知,WebView是异步工作的
页面本身没有标题,因此当WebView试图获取标题时,它找不到任何内容,即:null
希望这是有用的如果你知道如何设置一次,那么你可能知道如何再次设置…@James_D我是通过stage.setTitleMY浏览器设置的。但我希望它能从当前网页中自动获取名称。我不想太聪明。你的问题目前无法回答——我真的不知道你在问什么,这就是为什么我向你介绍了如何改进问题的资源。你能完整地解释你尝试了什么,结果是什么吗。理想情况下,包括一个您应该能够用几十行代码创建具有此功能的东西。似乎很难相信stage.setTitleMYBROWSER-+webview.getWebEngine.getTitle; 可能会导致一个标题只是谷歌。一般来说,您建议的代码应该基本上可以工作。我无法从您发布的信息片段中回答这个问题。也许其他人可以。谢谢你的帮助。但它不起作用。但它仍然只返回Google而不是我的浏览器:Google。我想你没有使用primaryStage.setTitleMy浏览器:+Browser.getEngine.getTitle;在ChangeListener方法中,您可以与我们共享完整的代码吗@地牢主人
browser.getEngine().getLoadWorker().
stateProperty().
addListener(new ChangeListener()
{
@Override
public void changed(ObservableValue observable, Worker.State oldValue, Worker.State newValue)
{
if (newValue == Worker.State.SUCCEEDED)
{
primaryStage.setTitle("My Browser : " + browser.getEngine().getTitle());
}
}
});