5 用JEditorPane显示HTML描述的文本从JDK1.4开始,Swing的很多组件(如JLabel)都可以显示HTML语言写的文本。这是一个巨大的进步,因为我们可以将所要显示的文字的配置信息如字体,字号,颜色,换行等信息直接以HTML写入到组件的setText()方法当中,不但免去了事后对这些信息进行繁杂配置的烦恼,而且还丰富和简化了所要显示文本的形式。而JEditorPane则有所不同,它天生就是用来分析并显示格式化文本的,由一些Java写的开源Web浏览器甚至都采用改进后的JEditorPane作为Web页的显示器。下图就是SwingSet2中的JEditorPane相关的例子。我们可以看到JEditorPane可以显示大多数的HTML元素,包括图片,格式化文字,URL链接等。 然而通过JEditorPane显示HTML描述的文本有两种方式: 第一种是直接使用JEditorPane.setPage(String htmlTxt);来显示用html语言写成的文本。但是这种方法的缺点是无法显示HTML文本中所描述的对外部资源(如图片,CSS等)的引用。所以如果要显示更为丰富的信息,仅仅用第一种方法是不够的。 所以第二种方法就呼之欲出:将用HTML语言描述的动态文本信息写到文件中,使之成为真正的HTML文件,再用JEditorPane.setPage(URL)或JEditorPane.setPage(String htmlFilePath),JEditorPane方法读入这个动态生成的内容文件就可以让JEditorPane自动为我们显示丰富的信息了。 String vNewReportFileName = "file:///c:/temp.html"; JEditorPane reportPane = new JEditorPane(); File f = new File(FileUtil.reportDir,vNewReportFileName); FileWriter fw = new FileWriter(f, false); fw.write("<html>"); fw.write("<head>"); ………… fw.write("</body></html>"); //清理操作 fw.flush(); fw.close(); f = null; reportPane.setPage(vNewReportFileName); 下图就是我的程序所显示的结果,从图中我们可以清楚地看到由CSS文件定义的表格的Title,这个Title是由一个蓝色的图片作为背景的。 让人遗憾的是用JEditorPane显示的表格的边框都很粗,虽然我已经将了表格的border设置为1,可是JEditorPane依然我行我素。但是在IE下,表格的边框的表现就要好的多: 网上有人说这是一个Bug,但是没有人给过解决这个问题的方法,如果有人又解决方法的话请留言,我将不胜感激! |
JEditorPane显示HTML --Swing篇
最新推荐文章于 2021-05-30 19:15:12 发布
Java实用经验总结--Swing篇【四】
2007年07月27日 星期五 19:10