WebBrowser 组件
JDIC 项目中的第一个组件(也是该项目的最初灵感) 是 WebBrowser,它提供了
一条接近操作系统内置浏览器的途径。任何熟悉 Swing 的人都非常清楚,在
Java 应用程序中查看 Web 页面很困难。例如,现有的 Swing 组件 JEditorPane
就做得很糟糕,只能显示最简单的 Web 页面。如果包含任何 DHTML 脚本,那么
请忘记它 —— 现有的 Swing 组件不能显示它。这让 Swing 开发人员失去了在
应用程序中显示 HTML 页面的选择 —— 由于 Web 在任何桌面应用程序中都是如
此之重要(用作帮助页面和 README 文件),所以这是一个很大的障碍。
特别打击 Swing 开发人员的一个事实是:现在每台机器上都有功能齐全的浏览
器,但它们的应用程序仍然无法使用。每个本机应用程序都能使用内置的浏览
器(Windows 上的 Internet Explorer 或 Linux 机器上的 Mozilla)。Swing 的功
能与易于访问的解决方案之间的巨大差距促使 WebBrowser 成为 JDIC 项目的一
个好起点。
WebBrowser 允许 Swing 应用程序将本机浏览器嵌入任何应用程序中。但是需要
重点指出的是,WebBrowser
仅仅
是 Web 浏览器应用程序的呈现部分。这个组件
不包含 Back 按钮、地址栏、状态栏,或者任何不属于应用程序呈现部分的内容。
但是,正如稍后将看到的,WebBrowser 包含了允许您实现这些常用的浏览器特
性的方法。
WebBrowser 组件继承自 java.awt.Canvas class,这意味着它是一个 Abstract
Windowing Toolkit (AWT) 组件。这可能让熟悉 AWT 和 Swing 组件混合问题
(包括重绘问题)的 Swing 开发人员开始担心。WebBrowser 组件覆盖了
java.awt.Canvas.paint() 方法,直接把 HTML 呈现给 Canvas 本身,确保了性
能的优化。但这对 Swing 开发人员意味着什么呢?这意味着必须把
WebBrowser 包含在 JPanel 中,才能在 Swing 中使用它。这并不像听起来那么
坏。JPanel 是包含 WebBrowser 的逻辑组件,其他 Swing 组件已经有内置的
HTML 支持了。
但是,在可以看到可视组件实际工作的同时,为什么还要一直谈论它们呢?以
下将要运行的示例是随 JDIC 下载一起提供的,它与本文其余示例重新打包在一
起,可以在一个下载中得到它们(请参阅 下载)。要查看 WebBrowser 示例的
实际工作,请运行 demo.Browser.Browser 主类。图 2 显示了 WebBrowser 示例的
实际工作:
图 2. WebBrowser 实际工作