--thumbelina.jar 这是一个演示图片搜索和显示的小程序JFrame
Preferences.userNodeForPackage(getClass()); 根据传入的class所在包的路径创建一个preferences
prefs.flush(); 保存到文件
项目中字符串拼接多采用StringBuilder
Lexer类用于对html格式的字符串解析成Node
mImage = Toolkit.getDefaultToolkit().createImage(bytes); //通过byte[]创建图片
Rectangle功能很强大,可以计算与另一个Rectangle是否重叠,和获取重叠的的矩形
file = File.createTempFile("thumbelina", suffix); file.deleteOnExit(); //创建临时文件
JViewport 用于查看底层信息的“视口”或“观察孔”。在滚动时,移动部分称为视口。这好像通过照相机的取景器进行查看。将取景器向上移动会将图片顶部的内部移入视野,而底部的内容将消失。
Tile类 英文是瓦,砖块的意思,很形象,接口编程,能得到“砖块”大小及位置Rectangle,它的状态Valid(有效/无效),它的id,项目里是图片对应的url
Picture类 负责下载图片,并且它实现了Tile,就可以在TileSet中显示了。它还有PictureListener属性,可以把图片状态的改变事件暴露出来。
PictureListener接口 对图片状态的监听
PicturePanel类 没看明白里面内嵌类Watcher的作用??
Sequencer类 把Picture放到队列里,一个线程定时地去取队列里面的图片,并呈现出来。
TileSet类 把矩形“瓦”集中起来,处理一些矩形重叠的问题,图片分割和整合部分看不懂。
ThumbelinaFrame类 程序的主界面
Thumbelina类 主要是对图片和链接的获取逻辑。2014-6-3
--sitecapturer.jar 一个抓取html和图片,并保存到本地的小程序,简单明了,以前我也想过找这样一个程序,把网页下载下来,放到本地看。
这个小程序就是实现了这样一个功能了,当然了,你要扩展它,让它能下更多的东西,比如js,css什么的。
SiteCapturer类 首先,它以内部类的形式定义ImageTag,LinkTag等的子类,封装得恰到好处。通过doSemanticAction()这个方法,在遍历的过程中得以执行,改写url为本地的。mCaptureResources是否获取资源文件。isToBeCaptured(String link)是否需要抓取。makeLocalLink(String link, String current)本地化链接地址。decode(String raw)对有%xx这样的编码进行解码。copy()下载资源,比如图片。 process()下载html,本地化url地址。分拣出各种资源并下载。
WikiCapturer类,是上面刚提到类的子类,主要是通过重写isToBeCaptured(String link)的方式,补充了对某些url地址的过滤条件。