效果

  

  

设计思路

需求分析

  图片浏览,上/下一张,放大缩小等基本功能。可以继续拓展的功能:缩略图、旋转,画笔修改等。此外,缩放实现较为简单,所以会出现失真。设计此类软件功能可参考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...,增强程序的可拓展性。

  具体代码:

     private Action getAction(String actionName) {
try {
if (this.action == null) {
Action action = (Action) Class.forName("crazyit.action." +
actionName).newInstance();
this.action = action;
}
return this.action;
} catch (Exception e) {
return null;
}
}

总结

  在实践中深入学习,重要的是在实战过程中仔细研究文档、积累经验,写出性能(算法)优良、设计(模式)合理的程序。

源代码

  https://github.com/zhaoyu1995/CrazyJava/tree/master/ImageViewer

Java开发图片浏览器--记录的更多相关文章

  1. iOS开发 -------- 图片浏览器初步

    一 示例代码 // // RootViewController.m // 图片浏览器初步 // // Created by lovestarfish on 15/11/1. // Copyright ...

  2. 阿里巴巴java开发手册学习记录,php版

    一.编程规约 (一)命名风格 1.目录使用小写+下划线 home,view,model,admin_view 2.类 UpperCamelCase PhpMailer方法 lowerCamelCase ...

  3. iOS开发-图片浏览器(优化)

    // //  ViewController.m //  19-图片浏览器 // //  Created by hongqiangli on 2017/7/31. //  Copyright © 201 ...

  4. 虚拟机上的Linux Java开发环境部署记录(VirtualBox+Ubuntu)第一章-基础环境搭建

    创建虚拟机时需注意三点: 在BIOS中开启Intel VT,以支持64位虚拟机系统: 对于Ubuntu 16以上版本,至少分配10G以上初始控件. 增加一块网卡,选择Host-Only网络,用于主机和 ...

  5. java开发之随笔记录

    1.java 保留两位小数 DecimalFormat df = new DecimalFormat("#.##"); System.out.println(df.format(1 ...

  6. Java实现简单的图片浏览器

    第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...

  7. Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式

    Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...

  8. 鸿蒙Java开发模式11:鸿蒙图片裁剪功能的实现

    鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 目录: 1. 鸿蒙版图片裁剪功能效果展示 2.Java代码实现 3.裁剪工具类实现 4.<鸿蒙Java开发模式>系 ...

  9. iOS开发系列--无限循环的图片浏览器

    --UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...

随机推荐

  1. mac中安装Jenkins+jdk

    Jenkins是基于Java开发的一种持续集成工具,用于持续的软件版本发布/测试项目,并监控外部调用执行的工作.简单来说就是自动化测试+部署. 首先我们需要安装jdk,注意,目前jenkins只支持j ...

  2. iOS 抽奖轮盘效果实现思路

    临近活动,相信不少app都会加一个新的需求——抽奖不多废话,先上GIF效果图 作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:937194184,不管你是小白还是大牛欢 ...

  3. react create-react-app使用less 及关闭eslint

    使用less和关闭eslint都需要先运行命令 npm run  eject 来暴露配置文件,(不可逆的) 一.less使用 运行命令安装less npm install less less-load ...

  4. linux bash编程之算数运算和测试类型(第二篇)

    写在最前边:在bash中数据类型有两种,分别是数值型和字符型.其中字符型是默认的. 1.算数运算 · 运算符 · 语法 1.1.运算符:+.-.*./.%.** 注意:有些时候 *(乘号)需要转义 1 ...

  5. 原生JS的移入溢出控制div的显示与隐藏

    原生JS的移入溢出控制div的显示与隐藏的写法 上面的写法火狐存在兼容性

  6. pyspark报错Exception: Java gateway process exited before sending its port number解决方法

    1.问题 搭建spark的python环境好后简单使用,源代码如下: 然后就给我丢了一堆错误: 2.解决办法 这里指定一下Java的环境就可以了,添加代码: import os os.environ[ ...

  7. JSONPath小试牛刀之Snack3

    最近在网上看了些JSONPath的入门例子.打算用Snack3这个框架写写例子.json path对`JSON的处理绝对是神器. 1.准备JSON字符串 { "store": { ...

  8. WIN2003+IIS6环境SSL证书的安装

        下载LOFTER我的照片书  |     一.解压证书文件.证书文件解压后,找到后缀为.pfx的压缩包,进行解压到固定位置.(一般放在网站根目录)        

  9. Thinkphp5.1 导入第三方包的问题

    一般刚接触tp5.1的,会很不适应,虽然版本号只是比5.0多了0.1,但是差别挺大,废弃了不少方法,官方的教程又很简单,很多东西没说全,在此鄙视一下框架作者,最起码体谅一下小白嘛,搞了好多天才把5.1 ...

  10. AIOps产品与架构浅析【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...