在Java Swing中显示HTML网页,并能响应链接

如果做过Java Swing开发的人应该知道,可以应用HTML标签来给控件增色,如

如果是完整一个HTML格式文件在Java Swing中应该如何显示出来呢?那就要用到强劲的编辑器控件JEditPane了。JEditorPane是Swing中一款非常强大的文本编辑控件,在JEditorPane中,我们完全可以将HTML文件或RTF格式的文件直接显示出来,但是它还不能完整地支持HTML的所有标准。支持HTML3.2标准的语法,对CSS和JavaScript就支持的不好,请掂量着使用CSS和JavaScript某些特性。

如果仅仅在JEditPane中显示网页,代码非常简单,只需以下四行代码:

这时候,网页虽然是显示出来了,可是你会发现点击网页上的超链接没反应,要使JEditorPane能够响应点击链接的事件,我们要为JEditorPane添加超链接的监听器:

HyperlinkListener接口的实现方法参照后面的完整代码

JEditorPane有两个重载的setPage方法,一个是setPage(String path),另一个是setPage(URL url)。你可以有多种方式获取要显示的HTML的path或url。

例如,对于显示本地系统上的HTML文件,可以用如下方式(为什么一定转成AbsolutePath,而不能直接editorPane.setPage("c:\test.html")我还没有搞清,反正直接editorPane.setPage("c:\test.html")页面显示不出来)

也可以通过类加载器得当相对于Classpath下的资源(HTML文件)的URL,方法如下:

另外:对于editorPane还可以用它的setText(content)来设置要显示的内容,content是以<body></body>包裹起来的,如

借于以上方法,你可以读取到网页的内容,然后取<body>部分(含Body标签),显示到editorPane上,不过这样做也真的是多此一举啦,而且还是出力不讨好的,想想在body之外还定义了一些样式表或更多内容就那样被抛弃了,具体这种用法的代码就不写出来了。

显示的网页如下图:

image

由上图可以看出来,HTML中的TextBox、ComboBox、RadioButton、Button等控件都被Swing JEditorPane转换成风格的相应控件来显示了,另外还注意到图中的"数据读取中"本该是要处理替换的,可是怎么也出不来,也就是JEditorPane对JavaScript得不到很好的支持,同时也能看到有些显示样式还不错,也有许多地方的显示风格与在IE中相差较远,由此,JEditorPane也是不能很好的支持样式表。

参考:1. 跟我学Java Swing之游戏设计(4)
       2. http://java.vkfz.com/Java-t191539.htm
       3. Eclipse 3.0 简介和插件开发示例

类别: Uncategorized. 阅读(155). 评论(0) »

Log4j是输出日志时是如何获知当前方法、行号的

记得最早在项目中用Log4j的时候,也是觉得在每一个要记载日志的类中或者某个上层类中要声明一个Logger属性挺麻烦的

或者

于是就写了一个自己的Logger类UnmiLogger,也就是把Log4j的Logger包装一下,直接调用Logger的日志输出方法,info、debug、warn等,只不过在UnmiLogger中把日志输出方法都改为静态的,让在别的代码中方便使用。 阅读全文 >>

类别: Uncategorized. 阅读(2,812). 评论(0) »

Log4j输出格式控制--log4j的PatternLayout参数含义[转]

做项目被log4j的输出格式化参数搞烦了,索性把API的相关部分大致翻译一下,原文参见http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html

 

阅读全文 >>

类别: Uncategorized. 阅读(78). 评论(0) »

收集的一些有关中文分词的资源

类别: Java/JEE. 标签: , . 阅读(60). 评论(0) »

运行 Think In Java中的 RMI 示例可能产生的几种异常及解决

在Think In Java里有一个示例 RMI 的代码 PerfectTime, 可是其中并没有把有些执行细节说明了,也就可以造成新手运行它会出某些异常而不知所措。下面将列出可能产生的异常,并说明解决办法,如读者在执行当中还遇到其他未列出的异常,可留言告知,吾将尽力而为。

首先把代码PerfectTime和DisplayPerfectTime 中的//colossus:2005/PerfectTime改为//localhost:2005/PerfectTime ,因为colossus为机器名,所以改为localhost指向本机,不然找不到主机colossus的。

已经用命令 RMIC 生成PerfectTime_Stub.class,并且执行了命令 rmiregistry 2005 阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(176). 评论(0) »

JAVA RMI 快速入门实例

本实例为参考多篇文章写就而成,网上及书上各类文章介绍如何使用RMI有多种实例可参考,譬如有:

1. 用命令rmiregistry启动RMI注册服务的
2. 同时创建存根(stub)和骨架(skeleton)的
3. 只创建存根类的的(jdk1.2以后版本)
4. 通过RemoteRef和rmi://协议字串方式的
5. 比较少讲到的用LocateRegistry直接在代码上启动RMI注册服务的。

以上描述并非明显分类,比如,你总是可以选择用rmiregistry或者代码LocateRegistry启动RMI注册服务

下面我将介绍一个完整的实例,让初学者能快速体验RMI的功用。

分为以下四个步骤 阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(39). 评论(0) »

你应该知道的10件关于Java 6的事情 [转]

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/mustang/beta2.html 一文中描述了你应该知道的10件关于Java 6的事情,下面总结如下

1.Web Services. 优先支持编写 XML web service 客户端程序。你可以用过简单的annotaion将你的API发布成.NET交互的web services. Mustang 添加了新的解析和 XML 在 Java object-mapping APIs中, 之前只在Java EE平台实现或者Java Web Services Pack中提供.

2.Scripting. 现在你可以在Java源代码中混入JavaScript了,这对开发原型很有有用,你也可以插入自己的脚本引擎。 阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(33). 评论(0) »

JavaScript:世界上误解最深的语言 [转]

JavaScript, aka Mocha, aka LiveScript, aka JScript, aka ECMAScript, is one of the world's most popular programming languages. Virtually every personal computer in the world has at least one JavaScript interpreter installed on it and in active use. JavaScript's popularity is due entirely to its role as the scripting language of the WWW.

JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫 ECMAScript,是世界上最流行的编程语言之一。事实上世界上的每一台个人电脑都安装并在频繁使用至少一个JavaScript解释器。JavaScript的流行完全是由于他在WWW脚本语言领域中的地位决定的。 阅读全文 >>

类别: Web/JS. 标签: . 阅读(66). 评论(0) »

以一个最简单的例子把OO的JavaScript说明白[转]

以一个最简单的例子把OO的JavaScript说明白 OO的JavaScript并不高深,麻烦就麻烦在google出来的国人介绍文章经常罗罗嗦嗦,而且之间的说法还各有不同,摆在一起就让人看了头大。
这里重拾简单主义,以一个最简单的例子把OO Javascript说明白。

1.一个颇为精简的例子

只需理解三个关键字:
第一个是function ,JS世界里Class的定义用'function',function里面的内容就是构造函数的内容。 阅读全文 >>

类别: Web/JS. 标签: , . 阅读(48). 评论(0) »

单元测试培训 笔记 2004-5-9

培训日期:2004/5/9

用系统测试的方法来测试单元
每30行代码要出一个测试用例 -- 单元测试
每50行代码要出一个测试用例 -- 系统测试

检视代码,测试用得好,设计是浪费时间
黑盒是基础,点80%用例,白盒是补充

代码覆盖应该有一个标准 阅读全文 >>

类别: Gossip. 标签: . 阅读(31). 评论(0) »
Page 1 of 212