今天学习之前做个前情回顾,前面几篇文章首先介绍如何用Netbeans创建JavaFX项目及利用JavaFX Scene Builder进行简单场景搭建;再介绍组件使用,组件事件绑定和组件绑定;接着确定了学习JavaFX要输出的学习,即编写一个简单浏览器。
学习到上一篇文章时我们已经实现了浏览器的简单功能,包括页面加载、前进、后退、刷新及主页等。然而作为一个浏览器,多标签页是必不可少的,当页面中链接target为blank时需要在新的标签页中打开该链接。今天就着重介绍该功能的实现。
前面已经把第一个标签页直接在场景中搭建好了,而浏览器的每个标签页中包含的组件是一样的,所以我们需要一个创建该标签页的类。按照这个思,我们先写一个自己的Tab类MyTab并从Tab继承。MyTab中需要实现之前场景中的组件添加及对应组件的事件绑定,我们将这些初始化操作都放到构造函数中,先来看下MyTab的构造函数如下图所示:
具体实现思:在菜单中添加一个CheckMenuItem,默认未选中即默认隐藏栏。由于浏览器多标签,如果用户选择显示栏那么新打开的标签页也需要显示栏,所以我们定义一个静态全局变量currentWebViewTop来保存当前webview的nchor值,新打开的标签页直接取这个值即可。同时需要为菜单显示栏提供一个方法,具体代码片段如下图所示:
点击页面中的链接时,需要判断是否需要在新标签页中打开该链接,所以我们需要页面加载事件。当页面加载完成时我们获取页面中所有a标签,如果a标签的target属性设置了blank则在新标签中打开。具体代码如下图所示:
到此今天的学习任务已经完成了,所有源码已提交到:有兴趣的同学可以看看,有什么不懂的可以查看下作者之前的文章,都有详细介绍。学Java的同学想写些小工具用JavaFX来写还是很不错的。再来看下运行效果图: