效果
设计思路
需求分析
图片浏览,上/下一张,放大缩小等基本功能。可以继续拓展的功能:缩略图、旋转,画笔修改等。此外,缩放实现较为简单,所以会出现失真。设计此类软件功能可参考ACDSee或irfanview等看图软件。
知识点
1.文件过滤、文件IO:FileFilter
2.文件对话框:JFileChooser(添加文件过滤功能)
3.浏览器主界面:JToolBar/JMenuBar/JScrollPane
4.响应事件:ActionListener/AbstractAction
5.展示图片:ImageIcon
设计模式
1.单例:业务处理类并不是无状态的Java对象,而是保存着浏览目录、缩放比例等信息。
具体代码:
public static ViewerService getInstance() { if (null == service) { service = new ViewerService(); } return service; }
2.反射:通过反射创建实例,避免if...else if.....else...,增强程序的可拓展性。
具体代码:
1 private Action getAction(String actionName) { 2 try { 3 if (this.action == null) { 4 Action action = (Action) Class.forName("crazyit.action." + 5 actionName).newInstance(); 6 this.action = action; 7 } 8 return this.action; 9 } catch (Exception e) { 10 return null; 11 } 12 }
总结
在实践中深入学习,重要的是在实战过程中仔细研究文档、积累经验,写出性能(算法)优良、设计(模式)合理的程序。
源代码
https://github.com/zhaoyu1995/CrazyJava/tree/master/ImageViewer