PhotoViewer.zip

  • PUDN用户
    了解作者
  • Java
    开发工具
  • 46KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2016-12-01 20:59
    上传日期
自己用JAVA实现的图片浏览器软件,功能较完整,J2SE初学者可以参考
PhotoViewer.zip
内容介绍
package me.mahe.viewer; import javax.swing.*; import javax.swing.filechooser.FileFilter; import java.awt.*; import java.io.File; import java.util.ArrayList; import java.util.List; /** * 图片浏览器业务类 * * Created by Administrator on 2016/9/22 0022. */ public class ViewerService { private static ViewerService service = null; // 新建一个ViewerFileChooser private ViewerFileChooser fileChooser = new ViewerFileChooser(); // 放大或者缩小的比例 private double range = 0.2; // 目前的文件夹 private File currentDirectory = null; // 目前文件夹下的所有图片文件 private List<File> currentFiles = null; // 目前图片文件 private File currentFile = null; /** * 私有构造器 */ private ViewerService() { } /** * 获取单态实例 * * @return ViewerService */ public static ViewerService getInstance() { if (service == null) { service = new ViewerService(); } return service; } /** * 打开图片 * * @param frame * ViewerFrame * @return void */ public void open(ViewerFrame frame) { // 如果选择打开 if (fileChooser.showOpenDialog(frame) == ViewerFileChooser.APPROVE_OPTION) { // 给目前打开的文件赋值 this.currentFile = fileChooser.getSelectedFile(); // 获取文件路径 String name = this.currentFile.getPath(); // 获取目前文件夹 File cd = fileChooser.getCurrentDirectory(); // 如果文件夹有改变 if (cd != this.currentDirectory || this.currentDirectory == null) { // 或者fileChooser的所有FileFilter FileFilter[] fileFilters = fileChooser .getChoosableFileFilters(); File files[] = cd.listFiles(); this.currentFiles = new ArrayList<File>(); for (File file : files) { for (FileFilter filter : fileFilters) { // 如果是图片文件 if (filter.accept(file)) { // 把文件加到currentFiles中 this.currentFiles.add(file); } } } } ImageIcon icon = new ImageIcon(name); frame.getLabel().setIcon(icon); } } /** * 放大缩小 * * @param frame * ViewerFrame * @return void */ public void zoom(ViewerFrame frame, boolean isEnlarge) { // 获取放大或者缩小的乘比 double enLargeRange = isEnlarge ? 1 + range : 1 - range; // 获取目前的图片 ImageIcon icon = (ImageIcon) frame.getLabel().getIcon(); if (icon != null) { int width = (int) (icon.getIconWidth() * enLargeRange); // 获取改变大小后的图片 ImageIcon newIcon = new ImageIcon(icon.getImage() .getScaledInstance(width, -1, Image.SCALE_DEFAULT)); // 改变显示的图片 frame.getLabel().setIcon(newIcon); } } /** * 上一个 * * @param frame * ViewerFrame * @return void */ public void last(ViewerFrame frame) { // 如果有打开包含图片的文件夹 if (this.currentFiles != null && !this.currentFiles.isEmpty()) { int index = this.currentFiles.indexOf(this.currentFile); // 打开上一个 if (index > 0) { File file = (File) this.currentFiles.get(index - 1); ImageIcon icon = new ImageIcon(file.getPath()); frame.getLabel().setIcon(icon); this.currentFile = file; } } } /** * 下一个 * * @param frame * ViewerFrame * @return void */ public void next(ViewerFrame frame) { // 如果有打开包含图片的文件夹 if (this.currentFiles != null && !this.currentFiles.isEmpty()) { int index = this.currentFiles.indexOf(this.currentFile) + 1; // 打开下一个 if (index + 1 < this.currentFiles.size()) { File file = (File) this.currentFiles.get(index + 1); ImageIcon icon = new ImageIcon(file.getPath()); frame.getLabel().setIcon(icon); this.currentFile = file; } } } /** * 响应菜单的动作 * * @param frame * ViewerFrame * @param cmd * String * @return void */ public void menuDo(ViewerFrame frame, String cmd) { // 打开 if (cmd.equals("打开(O)")) { open(frame); } // 放大 if (cmd.equals("放大(M)")) { zoom(frame, true); } // 缩小 if (cmd.equals("缩小(O)")) { zoom(frame, false); } // 上一个 if (cmd.equals("上一个(X)")) { last(frame); } // 下一个 if (cmd.equals("下一个(P)")) { next(frame); } // 退出 if (cmd.equals("退出(X)")) { System.exit(0); } } }
评论
    相关推荐
    • 数据库课程设计
      数据库课程设计使用,使用MFC编写的界面,连接ODBC数据源,方便移植。
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...