简介
时间: 大一下
人数: 一人
周期: 两天
语言: java
目的: java程序设计
从进大学学C开始,写过不少的程序了,这个应该是其中为数不多的几个有界面的程序之一。。。写这个的原因也很简单:java学完了,要交程序设计作业。至于为什么要选这么个东西,已然忘记了。唯一记得的是,当时为了赶在截止期之前写完(其实是在前两天才开始写的。。),用了两天没日没夜的在寝室敲代码,饭都没出去吃。
这个程序的想法也很简单,就是输入一个网址,然后把源代码抓回来之后分析出所有的图片地址,接着多线程下载到本地,主界面显示缩略图,也可以查看原图,另外,可以将当前网址添加到收藏夹,模拟一个只用来看图片的网络浏览器。好吧,我承认,是为了尽可能多的把所学练习一遍。
虽然只是一个小小的程序,但是遇到的问题也不少。首先就是GUI问题,默认的控件不能满足需求,于是自定义了一些控件,比如承载每个图片的区域(mypanel),各种排版也折腾了挺久。其次就是提取出图片地址的问题,本来是想用正则表达式来做这事的,但是苦于当时不会,没有时间去学,于是就利用其他一些方案代替了,基本就是查找以”.png”、”.jpg”等后缀结尾的字符串,实现了一定程度上的正确率。还有就是,图片的地址有的是绝对地址,有的是相对地址,都需要去做处理。
做这个程序的过程中也暴露了自己存在的一些问题,例如每次启动都会启动一个GO线程,然后由GO线程开启其它几个下载线程去下载图片。似乎到这都没什么问题,但是问题出在,下载完毕之后,GO线程无法获知这一情况,于是界面显示就放在了download线程,可想而知,每次new一个download线程的时候都要把主界面的引用传入,这种设计真的是太差了。
程序执行的一些界面(仍有一些bug尚未解决)
开始抓取源代码
解析完毕,开始多线程下载图片
开始多线程下载图片
多线程下载图片
查看原图,显示位置、大小等信息(亦可以将图片文件拖到此窗口上)
查看原图
执行一会后,下载的图片文件
下载的图片文件