若想要一定的网页显示功能,可以使用JavaFX的WebEngine和WebView组件。
-
WebEngine类
WebEngine类提供了基本的web页面功能。尽管它并不与用户直接交互,但它支持用户间接交互,如导航链接和提交HTML表单。WebEngine类一次处理一个web页面。它支持加载HTML内容和访问DOM对象等基本功能,也支持执行JavaScript指令。
有两个构造方法能够创建WebEngine对象:空构造和带一个URL参数的构造。如果你使用空构造方法来实例化它,那么URL可以通过WebEngine对象的load()方法来传入。WebEngine对象实例的getLocation()方法会返回当前加载页面的URL地址。 -
WebView类
WebView类是Node类的一个扩展。它封装了WebEngine对象,将HTML内容加入程序的scene中,并且提供各种属性和方法来应用特效和变换。WebView对象的getEngine()方法返回一个与之关联的web engine,例如可以这样使用:
WebView webView = new WebView();
WebEngine webEngine = webView.getEngine();
webEngine.load("https://www.baidu.com");
baidu页面的内容就会加载显示在webView组件中,webEngine 如果再次 load另外一个URL,则webView就自动加载另外一个页面的内容。
- WebHistory类
WebHistory类可获取已访问的页面列表,它表示与WebEngine对象关联的一个会话历史记录。使用WebEngine.getHistory()方法来获取某特定webEngine对象的WebHistory实例, 即:WebHistory history = webEngine.getHistory();
该历史记录基本上是一种特殊类型的列表。类似普通List,该列表也是下标从0开始,每一个条目表示一个已访问过的页面并且提供对该页面相关信息的访问。该列表可通过getEntries()方法获得。该对象的getCurrentIndex()方法返回值表示当前访问页面在列表中的索引位置。
用在刷新页面例子:
// 获取WebHistory
WebHistory history = webEngine.getHistory();
// 获取历史Entries
ObservableList<WebHistory.Entry> historyList = history.getEntries();
System.out.println(historyList);
// 获取当前页面索引
int currentIndex = history.getCurrentIndex();
// 获取当前页面的Entry信息
WebHistory.Entry currentEntry = historyList.get(currentIndex);
// 获取url
String url = currentEntry.getUrl();
// 刷新
System.out.println(url);
webEngine.load(url);
该对象的go(int index)方法表示页面的跳转,例如history.go(-1)就是返回上一个访问的页面,history.go(1)表示前进到下一个访问过的页面,这两个方法使用要注意边界条件判断,否则会抛出异常,例如已经没有可回退的页面记录,再执行回退方法就抛出异常。
页面向前:
// 获取WebHistory
WebHistory history = webEngine.getHistory();
// 获取历史Entries
ObservableList<WebHistory.Entry> historyList = history.getEntries();
System.out.println(historyList);
// 获取当前页面索引
int currentIndex = history.getCurrentIndex();
int len = historyList.toArray().length;
if (currentIndex != len - 1) {
history.go(1);
} else {
System.out.println("到头不能前进了");
}
页面向后
// 获取WebHistory
WebHistory history = webEngine.getHistory();
// 获取历史Entries
ObservableList<WebHistory.Entry> historyList = history.getEntries();
System.out.println(historyList);
// 获取当前页面索引
int currentIndex = history.getCurrentIndex();
if (currentIndex != 0) {
history.go(-1);
} else {
System.out.println("到0不能退了");
}