鱼喃

听!布鲁布鲁,大鱼又在那叨叨了

picbrowser---一个图片浏览器

简介

时间: 大一下
人数: 一人
周期: 两天
语言: java
目的: java程序设计

从进大学学C开始,写过不少的程序了,这个应该是其中为数不多的几个有界面的程序之一。。。写这个的原因也很简单:java学完了,要交程序设计作业。至于为什么要选这么个东西,已然忘记了。唯一记得的是,当时为了赶在截止期之前写完(其实是在前两天才开始写的。。),用了两天没日没夜的在寝室敲代码,饭都没出去吃。

这个程序的想法也很简单,就是输入一个网址,然后把源代码抓回来之后分析出所有的图片地址,接着多线程下载到本地,主界面显示缩略图,也可以查看原图,另外,可以将当前网址添加到收藏夹,模拟一个只用来看图片的网络浏览器。好吧,我承认,是为了尽可能多的把所学练习一遍。

虽然只是一个小小的程序,但是遇到的问题也不少。首先就是GUI问题,默认的控件不能满足需求,于是自定义了一些控件,比如承载每个图片的区域(mypanel),各种排版也折腾了挺久。其次就是提取出图片地址的问题,本来是想用正则表达式来做这事的,但是苦于当时不会,没有时间去学,于是就利用其他一些方案代替了,基本就是查找以”.png”、”.jpg”等后缀结尾的字符串,实现了一定程度上的正确率。还有就是,图片的地址有的是绝对地址,有的是相对地址,都需要去做处理。

做这个程序的过程中也暴露了自己存在的一些问题,例如每次启动都会启动一个GO线程,然后由GO线程开启其它几个下载线程去下载图片。似乎到这都没什么问题,但是问题出在,下载完毕之后,GO线程无法获知这一情况,于是界面显示就放在了download线程,可想而知,每次new一个download线程的时候都要把主界面的引用传入,这种设计真的是太差了。

程序执行的一些界面(仍有一些bug尚未解决)

开始抓取源代码

0a1f2a6e3353246f3ffe85c5519af07b.png

解析完毕,开始多线程下载图片

ab0f06ef1969aafbfcc2413c3b6c302c.png

开始多线程下载图片

d37f3f1d3ff7c429368c8419a8301e2e.png

多线程下载图片

查看原图,显示位置、大小等信息(亦可以将图片文件拖到此窗口上)

6bf881bfc5d5b1c77356574ed3da1f83.png

查看原图

执行一会后,下载的图片文件

d29d006f813104081f841d013a202be2.png

下载的图片文件