Monday, 12. March 2007, 15:06:23
java, javadoc, javase
Monday, 29. January 2007, 15:49:32
NetBeans, 编程, 软件设计, 建模
...
LGRM -- Lao Geng Records Manager
为同学开发的这个软件,也是自己第一个桌面程序,还是用JAVA写的。所用的数据库是陌生的(db4o),JFC(swing)以前也没用过,也是第一次用NetBeans来设计界面。整个过程下来,还是学到不少东西。
以前没做过桌面程序,对开发模式,模块分化等等都好的设计。做了下来,个人觉得应该分为四个部分 GUI,Action,Model,DAO。
GUI部分主要是界面布局,提供功能入口和数据呈现。应该尽量将拆分为独立的各个部分,最好是Panel,并添加到组件面板中。使用JDialog还是JFrame,那要按需求而定。这次我就改过,从JDialog到JFrame,因为JDialog不能全屏放大。只要将界面组件拆分好,再加上NetBeans的强大能力,是可以做出漂亮的界面,并且对界面的修改也容易。要是分离得好,那基本上对功能代码没有影响!
Action部分,基本都继承Thread,也就是要有多线程运行能力,保证程序反应灵敏,特别是在访问数据库的的时候。这部分也是主要的逻辑部分,处理用户的操作、获取数据、验证数据完整性、提示用户、更新数据。有时候会觉得这部分太零散了,类过多。
Model部分,基本是数据承载类,也是因为swing的原因,像JTable这样的数据组件都有个Model,提前封装好就可以直接使用。封装一般由Action完成,可以适应一个数据,多个Model。不过如果数据显示单一的话,也可以直接由DAO完成,这样还要个好处就是数据装填对应性好。
DAO部分,负责和数据库交互,返回数据格式最好是和数据以方便装填。这部分多数以存储对象的为基础构造。
实际中,组件间的相互访问,Action和组件访问都是比较多的,要想访问,就得有引用。要不所有组件放到一个Class中,要不保证本组件有要访问组件的引用。与其这样还不如搞个组件池,把几个主要的组件放个引用到池中,需要时就去拿。
在Web程序中,表单验证是经常提到的事情,比较客户端和服务器端交互的主要手段就是表单。在桌面程序由于没这个故有的form,所以自由度很大,不过最优的解决方案还是验证的直接绑定。原则是,只写一次!
在桌面程序,最复杂的地方应该算是事件的触发了。包括同一事件的不同触发方式,以及多事件的相关触发,以及同一事件不同情况的触发的不同结果。还要一个方面就是数据的完整性。保证数据的完整性是个很重要的方面,应该在Action和DAO两个部分都保证。主要在Action来完成,这样也可以向用户提示足够细致的信息,DAO主要是起到一个校验的作用。
提供一个默认设置,从数据存放到功能方式。尽可能向用户提供更多的选择!尽量不要让提示、标识文字出现在程序中,将他资源化,保留一个默认资源。这样最大的好处就是可以国际化!如果有可能给用户提供一个BUG或意见的提交方式!
建模的重要性。建模可以提前帮助你更清晰的看清每个部分,提前想好每个部分的关联。“过于敏捷”也不是什么好事!提早进入细节的实现,容易导致对全局的或略,使软件走偏。也容易犯考虑不周的问题。敏捷最主要还是要满足用户需求,可以让GUI部分走得块些,利用强大的界面设计器,和用户一起模拟使用环境。用户是“愚蠢的”,很多时候用户并不知道自己真正的需求,如果你想到了某需求可能需要,那请在进度保证的情况下加上去。如果是功能实现的不同见解,那就和用户沟通,如果自己坚持那就干脆提供两总方式!满足自己也满足用户!
今天就写这些了!
Monday, 29. January 2007, 10:12:32
NetBeans, sorter, TableSorter, java
...
swing中JTable并没有实现排序功能,不过在实际应用中,这个却是非常常用的功能,不过sun公司有一个实现,通用的,也挺好用的。在别人的BLOG上找到的,现在放到BLOG上。记得上次找到一个可以关闭标签的JTabbedPane实现,不过在Windows外观下,按钮失效。如以后真的要用,还是只有用NetBeans的那个实现(和JBuilder可不一样)。不过要能掌握NetBeans Platform那应该更好!
/** 使用方法 */
TableSorter sorter = new TableSorter(new MyTableModel()); //ADDED THIS
//JTable table = new JTable(new MyTableModel()); //OLD
JTable table = new JTable(sorter); //NEW
sorter.setTableHeader(table.getTableHeader()); //ADDED THIS
Read more...
Thursday, 21. December 2006, 15:32:30
jdk, javase, java
JDK 1.1.4
Sparkler
宝石
1997-09-12
JDK 1.1.5
Pumpkin
南瓜
1997-12-13
JDK 1.1.6
Abigail
阿比盖尔--女子名
1998-04-24
JDK 1.1.7
Brutus
布鲁图--古罗马政治家和将军
1998-09-28
JDK 1.1.8
Chelsea
切尔西--城市名
1999-04-08
J2SE 1.2
Playground
运动场
1998-12-04
J2SE 1.2.1
none
无
1999-03-30
J2SE 1.2.2
Cricket
蟋蟀
1999-07-08
J2SE 1.3
Kestrel
美洲红隼
2000-05-08
J2SE 1.3.1
Ladybird
瓢虫
2001-05-17
J2SE 1.4.0
Merlin
灰背隼
2002-02-13
J2SE 1.4.1
grasshopper
蚱蜢
2002-09-16
J2SE 1.4.2
Mantis
螳螂
2003-06-26
J2SE 5.0 (1.5.0)
Tiger
老虎
2004-10
J2SE 6.0 (Beta)
Mustang
野马
2006-04
Sunday, 12. November 2006, 12:20:09
打击, 数据库, Derby, db4o
...
今天到javaeye发了一帖,问了下选用嵌入式数据库的事情,结果没想到帖被删除了!同时也害得我成了负分,结果不能再发帖了,要封三天。也许选择在那发帖问人是个错误,随意以后决定,不再发帖了,还是潜水的好!其实有时候自己还是多愿意在论坛上发言的,不过看来还是只读比较保险!
其实自己也一直很欣赏开源的,人人为我,我为人人。呵呵!
今天本来选定了Derby做数据库的,而且JavaSE6.0将会内置它,如果用来做桌面软件的数据库,那还真的不错。不过最后自己选择了db4o做数据库。它很小巧,还是纯面向对象的,而且在国内发展势头还不错,并且还有.net版本的。个人现在对嵌入式数据库很有兴趣。
决定要帮同学做一个小程序,不过一边要考试,一边要做程序,时间肯定会长点,不过我喜欢。其实这几天没有编程序,实在是不喜欢,手老是痒痒。呵呵!不过学习还是第一位的,只是在闲暇或者学习任务都完成的情况下再考虑编程!
个人最想做的事情还是能做网络应用的程序,当然不单单是blog之类的,比如像资源分享、资料收集、团队合作……就目前来讲,web程序和p2p程序是最接近这种想法的!
/**
* Sometimes , the only way to stay sane is go a little crazy .
*/
Saturday, 28. October 2006, 16:51:59
javase, 启动, 应用程序, java
public class Main {
private static ServerSocket s = null; // 静态变量
public static void main(String[] args) {
try {
s = new ServerSocket(54321); //54321为你自己定义的端口号
} catch (Exception e) {
System.out.println("只能启动一个进程");
e.printStackTrace();
System.exit();
}
//your code
//do something
} }
代码无法缩进真是很郁闷!看着就倒胃口。。。。
/**
* Sometimes , the only way to stay sane is go a little crazy .
*/
Friday, 20. October 2006, 14:21:46
程序, web, javase, java
...
Java SE 6 给我们带来了2个新特性
1. Classpath通配符
2. OutOfMemeory Error检测
简单而使用的东西,对于第一个,我个人觉得对干工程的人,作用好象不是太大,不过对于一个新手,用命令开发,那还是很有用的东西。第二个,那就是很有意义了。知道哪里错了,真是很不错的事情。最郁闷错了,但是就是找不到错在哪里!!
对于环境变量,其实本来是不用设置的,当然,那又是非常麻烦的一件事情,毕竟每次都输入那么多的东西并不是什么愉快的事情,我觉得很多书讲得都不是很明白,特别是对于一些刚接触程序开发的人来说,简直就是噩梦!!记得刚接触JAVA的时候是在我开始学习编程之前,那个时候我还什么都不知道,都不懂。那个时候我照着书弄个一个晚上的JAVA环境,然而最后失败了。。那以后,我学了C,学了Javascript和ASP技术,两年后,我又开始学JAVA了。走了那么一大圈,我还是回来了。
两年多以前,要是我真的开始学JAVA了,那我也不知道我现在会是怎么一个样子,呵呵!也许我就不再是现在这个样子了!!现在学习很忙,但自己还得不断学习自己热爱的Java。说实在的,这并不是什么轻松的事情。自己在煎熬中徘徊,想要放弃,却有无法放弃。。。
其实如果按正常的学习规律,大一大二是积累的时候,大三的时候干事情的时候,大四应该是成果满怀的时候。然而现在的我却还什么都没有,处了在同学间的一点点卑微的名气。
入门是很总要的事情,如果有个好“老师”,那将是终身受益的。可惜,我一直没有找到这样一个老师,一切都只有靠自己摸索,甚至是两年后重学JAVA那段时间,我依然是自学的。没有老师,没有指点,知识的来源就是图书馆和网络。可惜自己E文不好,哎!现在已经是自己学习中最大的障碍了!今后的努力弥补!!
现在程序的门算是入了!可是我现在又开始迷茫了!一方面是因为自己成绩很烂,陷入了毕业考研的痛苦旋涡中,而另一方面又发现自己在浩瀚的计算机世界里找不到自己的位置了,自己开始不知道应该往什么方向发展了。
JAVA的WEB开发也越来越远离我所设想的了,越来越觉得自己象是一个拼装者,拿着别人给的东西,然后把它跑起来。我想一个用门电路做一个CPU和一个人买个CPU来用,其中的乐趣我想是无法比拟的吧!!!
/**
* Sometimes , the only way to stay sane is go a little crazy .
*/