现在只能算是个demo,所以别报太大期望,有空的可以帮忙完善完善,想要代码的请主动联系我
我会陆续的把代码贴上来的
华丽的分割线
06-27
首先是找到制定的读取rss信息的opensource,也就是rome现在的版本是0.8,配置好环境,运行第一个读取数据的代码。
内容参照http://blog.youkuaiyun.com/zdsdiablo/archive/2006/06/10/786366.aspx
数据部分可行,最核心的代码就是这个了,后面的开始UI的设计部分:
1. JMenu菜单栏
2. JToolBar工具栏
3. JTree左边的树型结构
4. JTabbedPane标签栏
5. JTextPane具体显示的内容部分
首先架好结构,在GUIManager.java中,把这几个控件显示出来。
然后按照紧要关系,先实现的第5部分,也就是显示具体数据,参照文件NewsText.java最后给你的时候可能会变名字,现在还是叫这个(可能很多名字和位置都会变,现在做的分析不好,包结构弄的挺难看,做完了有空我再改)。
这个文件没什么难度,不过当时写的时候因为少一句setContentType("text/html");折磨了很久,一直调试不成功,有了这句,主要是让那个空白区域可以象浏览器一样读取html的数据,而不是直接显示html代码(不懂问我)。
下一步就是实现在右边的那个列表
该列表的数据来自于前面rss读到的一条链接,具体代码参见本页开头的那个地址
读取数据不是问题,前面已经读了,主要就是建立它的模块有点麻烦,也就是那个NewsTableModel.java。能够显示数据以后写它的鼠标事件,写在NewsTable.java中,写好后,在鼠标点击某一行的时候,下面就会显示出相应的信息。
接下来的任务是写左边的那个tree,步骤还是先写模块,后写事件。因为里面的数据用什么来存储一直没有定下来,数据不多,暂时用xml来完成。用了jdom中的一些类。内容来自于RSSOWL这个开源软件的user.xml文件,用了其中的一部分,去掉了用不着的东西。
今天完成了对这个文件的读取,但是,对RSSOWL来说,里面是可以无限分层的,就象电脑里可以无限的一层一层建文件夹,这对读取来说有一点麻烦。具体的说,一次读取的话,因为不知道有多少层,就得写成死循环,要么就是用递归(我非常不喜欢这个东西);要么就得分层读取,就是首先读取第一层,当鼠标点击得时候在读取下一层。暂时按照后一种去写,不过鼠标点击得事件部分还没写,明天再说。
写一下后面的计划
1. 首先在JTree中按照树型结构显示出那个xml中读到的数据,在JTree中加入鼠标事件,配合xml按层展开树,把最后的link传递到右边的JTabbedPane中去(这里完成的话就算是一个demo了)
2. 写入数据库,先数据结构,然后建表,填入数据,要修改前面的一些地方
3. 然后整理整个项目的结构,层次要清晰些,命名统一规范一下。在需要注释的地方写上中文注释,到时候你改成英文的吧。然后加入工具栏和菜单栏的内容
4. 测试,看看有没有内存溢出,多用几个不同的链接,通过的话看显示有没有问题,通不过的话打出错误信息
5. 有时间加入一些花俏的功能,选作。
06-29
图省事,左边的tree结构就用了两层,暂时还没想到多层的话应该怎么写
现在已经能把数据加进去了,显示出来的已经很象了,但是取的时候取不到对象,用鼠标点某一个结点只能得到他的标题,估计很快就能把里面的link传到右边去了。全部连起来以后demo就成了。
06-30
成功放出demo, 暂时看,中文和图片显示的都还正常,读某些地址的时候时间很长,不知道是网络的问题还是程序结构写的不好,看看下一步是整理结构先,还是写数据库先。
07-06
整理了代码的结构,引入了一个Hashtable htHandler 作为那几个控件的句柄。这样在各个控件之间就不用传递控件地址了,只要有这个就可以读出来了。去掉了textpane中可以写字的bug. 看看计划,该写数据库了。
下午三点,数据库连接成功,后面就是一些写数据和判断是否为历史数据区别的一些东西了
暂时按照TableData.java现有的结构来组织建表
用的mysql4.0 头晕,今天就到这了
忙 忙 忙
08-15
忙了好些天,终于有功夫继续做了
mysql还是没弄,准备先把别的功能做完了再整数据库的部分
写完了那个配置端口的dialog,可惜现在只能读不能写,等有功夫把这段给补全
然后又加了一个欢迎页面,最简单的那种
加了一个帮助的dialog,不过里面什么都没写
08-16,17
加了一个进度条,本来是用来显示读取网络数据时的进度的。最起码显示个状态,结果因为一条很恶心的代码,这些想法都泡汤了,这句代码就是最开始要读取的部分TableReader.java里面的XmlReader xr =new XmlReader(feedUrl); 这句。
因为这句话,读取数据的时候整个java界面部分都停掉了等着,甚至设了线程单独跑它也补行,我真想掐死它。不过这种地方不好改的,所以只能将就了。
所以现在的进度条意思跟正常的正好相反,就是平时是滚动的,读取的时候是停的
白痴吧
反正是做设计,那些好看不好用的东西就不整了,写一下后面的计划:
1. 完善配置端口的dialog
2. 支持mysql,可以把读到的数据存到mysql中,存什么呢?再考虑考虑,这个需求比上面那个代码还白痴,得多鄙视一会儿。
3. 如果完成了2 有必要在1的那个dialog里面再加入一些数据库的配置
关于上面2 的分析
在table上面多选,选好以后鼠标点右键叫一个浮动菜单出来选择存入数据库
在显示的时候单独在顶层菜单加一个读取已经存入数据库的菜单项,然后就在tabbedpane里面添加一个table,这个 table跟原来的不一样,它是只有删除没有存的,标题区分一下就行了 sql建表部分已经完成,有两天应该就能搞定了
-- use this create table sql
DROP TABLE IF EXISTS `rss_inf_storedb`;
CREATE TABLE `rss_inf_storedb` (
`title` varchar(200) NOT NULL default '',
`publishedDate` BIGINT(20) NOT NULL default '0',
`author` varchar(200) NOT NULL default '',
`description` TEXT(1024) NOT NULL default '',
`link` varchar(200) NOT NULL default ''
)DEFAULT CHARSET=latin1;
08-18
成功加入数据库,不过本机的mysql是4.0的,对中文的支持不好,所以就先不考虑专对中文的制式转换下功夫了,再写一个删除和浏览的table就基本OK了
动作快呀,都整上了,可以测试了