Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在加载网页时更改javaFX Web浏览器中的阶段名称?_Java_Javafx_Javafx 8_Fxml_Netbeans 8 - Fatal编程技术网

如何在加载网页时更改javaFX Web浏览器中的阶段名称?

如何在加载网页时更改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

我正在使用JavaFx创建一个web浏览器。假设我的浏览器有一个名字,我的浏览器。我希望无论何时加载网页,例如http:www.google.com,阶段名称都应该是我的浏览器-谷歌。怎么做。我已经将我的舞台名称设置为我的浏览器

这是我的HomeEngine类的构造函数

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