功能:启动后选择打开文件,可以打开图片进行浏览。

v 1.0 :支持上一张 下一张功能。(欠缺,窗口大小未随着图片大小而改变)

  1 import java.awt.BorderLayout;
  2 import java.awt.EventQueue;
  3 import java.awt.event.ActionEvent;
  4 import java.awt.event.ActionListener;
  5 import java.io.File;
  6 import java.io.IOException;
  7
  8 import javax.imageio.ImageIO;
  9 import javax.swing.ImageIcon;
 10 import javax.swing.JButton;
 11 import javax.swing.JFileChooser;
 12 import javax.swing.JFrame;
 13 import javax.swing.JLabel;
 14 import javax.swing.JMenu;
 15 import javax.swing.JMenuBar;
 16 import javax.swing.JMenuItem;
 17 import javax.swing.JOptionPane;
 18 import javax.swing.JToolBar;
 19
 20 public class TestMenu extends JFrame {
 21     private JToolBar toolBar = new JToolBar();
 22     private JButton up = new JButton("up");
 23     private JButton down = new JButton("down");
 24     private JLabel label;
 25     private JFileChooser chooser;
 26     private static String[] currentPath = new String[10000];// 最多一万张图片
 27     private static int dirPhotoCount = 0;
 28     private static boolean flag = false; //user yes or not open dir
 29
 30     public static void getFileNameToFullPhotoArray(String dirPath) {
 31         String path = dirPath;
 32         File f = new File(path);
 33         if (!f.exists()) {
 34             System.out.println(path + " not exists");
 35             return;
 36         }
 37         int cut = 0;
 38         File fa[] = f.listFiles();
 39         for (int i = 0; i < fa.length; i++) {
 40             File fs = fa[i];
 41             try {
 42                 if (ImageIO.read(fs) != null) { // Yes or not photo style file.
 43                     currentPath[cut++] = dirPath + "\\" + fs.getName();
 44                 }
 45             } catch (IOException ex) {
 46
 47             }
 48         }
 49         dirPhotoCount = cut;
 50     }
 51
 52     public TestMenu() {
 53         super();
 54         setTitle("PHOTO viewer");
 55         getContentPane().add(toolBar, BorderLayout.NORTH);
 56         label = new JLabel();
 57         this.chooser = new JFileChooser();// java provide file selected
 58         chooser.setCurrentDirectory(new File("."));// view path
 59
 60         JMenuBar jmb = new JMenuBar();
 61         setJMenuBar(jmb);
 62         JMenu fileMenu = new JMenu("File");
 63         JMenuItem jmiExit = new JMenuItem("Exit");
 64         JMenuItem jmiOpen = new JMenuItem("Open");
 65         jmb.add(fileMenu);
 66         toolBar.add(up);
 67         toolBar.add(down);
 68         getContentPane().add(toolBar, BorderLayout.NORTH);
 69         add(label);
 70         jmb.add(fileMenu);
 71         fileMenu.add(jmiOpen);
 72         fileMenu.add(jmiExit);
 73
 74         up.addActionListener(new ActionListener() {
 75             public void actionPerformed(ActionEvent e) {
 76
 77                 if (flag) {
 78                     String dir = chooser.getSelectedFile().getParent();
 79                     getFileNameToFullPhotoArray(dir);// current dir build photo array
 80                     String currentImage = label.getIcon().toString();
 81                     for (int i = 0; i < dirPhotoCount; i++) {
 82                         if (currentPath[i].equals(currentImage)) {
 83                             label.setIcon(new ImageIcon(currentPath[i == 0 ? dirPhotoCount - 1 : i - 1]));
 84                             break;
 85                         }
 86                     }
 87                 } else {
 88                     JOptionPane.showMessageDialog(null, "当前无图片,请选择正确文件", "打开失败", JOptionPane.ERROR_MESSAGE);
 89
 90                 }
 91             }
 92
 93         });
 94         down.addActionListener(new ActionListener() {
 95             public void actionPerformed(ActionEvent e) {
 96
 97                 if (flag) {
 98                     String dir = chooser.getSelectedFile().getParent();
 99                     getFileNameToFullPhotoArray(dir);// 对当前目录建立图片数组
100                     String currentImage = label.getIcon().toString();
101                     for (int i = 0; i < dirPhotoCount; i++) {
102                         if (currentPath[i].equals(currentImage)) {
103                             label.setIcon(new ImageIcon(currentPath[i == dirPhotoCount - 1 ? 0 : i + 1]));
104                             break;
105                         }
106                     }
107                 } else {
108
109                     JOptionPane.showMessageDialog(null, "当前无图片,请选择正确文件", "打开失败", JOptionPane.ERROR_MESSAGE);
110
111                 }
112             }
113
114         });
115
116         jmiOpen.addActionListener(new ActionListener() {
117             public void actionPerformed(ActionEvent e) {
118                 int result = chooser.showOpenDialog(null);
119                 if (result == JFileChooser.APPROVE_OPTION) {
120                     try {
121                         if (ImageIO.read(chooser.getSelectedFile()) != null) { // 判断是否是图片文件
122                             flag = true;
123                             String name = chooser.getSelectedFile().getPath();
124                             label.setIcon(new ImageIcon(name));
125                         } else {
126                             JOptionPane.showMessageDialog(null, "请选择正确文件", "打开失败", JOptionPane.ERROR_MESSAGE);
127                         }
128                     } catch (IOException ex) {
129
130                     }
131
132                 }
133             }
134         });
135
136         jmiExit.addActionListener(new ActionListener() {
137             public void actionPerformed(ActionEvent e) {
138                 System.exit(0);
139             }
140         });
141     }
142
143     public static void main(String args[]) {
144         EventQueue.invokeLater(new Runnable() {// using Runnable anonymous
145                                                 // object
146             public void run() {
147                 JFrame frame = new TestMenu();
148                 frame.setSize(500, 400);
149                 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
150                 frame.setVisible(true);
151
152             }
153
154         });
155
156     }
157
158 }

转载于:https://www.cnblogs.com/A--Q/p/6618047.html

Java--图片浏览器相关推荐

  1. java课程设计图片浏览器_java课程设计图片浏览器

    [实例简介] 图片浏览器最基本的功能是能浏览一个目录中的所有图片,并可以点击浏览上一张图片或者下一张图片,还有对图片放大与缩小,或者翻转图片等操作,在这里,实现了图片的浏览功能,导航功能(下一张.上一 ...

  2. java 简单图片浏览器_Java实现简单的图片浏览器

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

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

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

  4. linux 浏览器源码下载,Android开发:图片浏览器源码

    Android 图片浏览器源码,是你学习Android很好的例子,希望对你的学习有帮助. main.xml android:layout_width="fill_parent" a ...

  5. 【Android 应用开发】AndroidUI设计 之 图片浏览器

    图片浏览器效果图 : 源码下载地址 : -- CSDN : http://download.csdn.net/detail/han1202012/6875083 -- GitHub : https:/ ...

  6. 基于RecyclerView的图片浏览器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.作业要求 二.具体实现 1.布局代码 2.程序代码 总结 前言 基于RecyclerView的图片浏览器 一.作业 ...

  7. java 图片不失真缩放,ico格式图片转换,透明图层,jar->exe

    Java 图片缩放,转ico格式 Java 在转换图片格式为 ico 时 需要引入 image4j 的依赖,这里分享一个自己写好的并通过exe4j 打包好的exe小程序.因为功能太少所以再引入 thu ...

  8. Android界面编程之简单的图片浏览器

    Android界面编程之简单的图片浏览器 在进行android编程之前,我们首先要明确一下几点: 1.安卓开发中各种资源所在的位置以及自己编写时应该放到的位置: android项目中所有的资源都放到r ...

  9. java图片处理以及pdf转图片

    java图片处理以及pdf转图片 1.需求 之前项目里面有用到显示pdf的模块,需要将pdf显示处理,也结合了一些插件,pdf.js是firefox浏览器推出的一套h5渲染pdf的前端插件,支持移动端 ...

  10. 轴旋转——制作别样的图片浏览器

    首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 贵公子丶笔记 千里之行,始于足下. RSS订阅 转 Andro ...

最新文章

  1. Android自定义滑动验证条
  2. python的优缺点有哪些-python的优缺点有哪些
  3. 深入理解JVM虚拟机(十一):线程安全与锁优化
  4. 项望烽:移动 IM 开发之登录优化
  5. WordPress里的PHP AJAX call
  6. 根据大小分割大文本_基于深度学习的图像分割在高德地图的实践
  7. HTML+CSS+JS实现 ❤️3D洞穴无限延伸动画特效❤️
  8. mysql分组失效_请教MySql中使用表子查询时,试着先排序后分组,出现排序失效的原因?...
  9. Docker学习总结(18)——阿里超大规模Docker化之路
  10. eclipse查找指定行数
  11. AcWing 166. 数独
  12. 云计算需要更强大的管理工具
  13. (转)递归算法的时间复杂度终结篇与Master method
  14. MATLAB数学建模教学 | 史上最强的MATLAB学习网站,你需要的这里统统都有!!!
  15. 占内存小的android浏览器,一点浏览器占内存吗 世界最小浏览器使用评测
  16. 如何查看MySQL的表空间
  17. 修复Ubuntu文件系统
  18. 玩转华为数据中心交换机系列 | 汇总
  19. 医学成像技术简介(CT,MRI等)及相关论坛、技术应用链接
  20. 股票移动平均线matlab,matlab – 计算移动平均线

热门文章

  1. JavaScript 笔记 ( Prototype )
  2. web数据库连接注意事项
  3. Requirejs2.0笔记
  4. 配置apache+php环境详解
  5. 编译执行和解释执行的区别
  6. poj 3984 迷宫问题 BFS
  7. OpenCV学习资料收集
  8. mysql 虚拟环境搭建_pycharm虚拟环境virtualnv安装MySQL扩展
  9. Spring 配置文件的差异
  10. 大理大学日常作业计算机基础知识,大理学院成人高等教育计算机应用基础课程作业题及答案...