Java--图片浏览器
功能:启动后选择打开文件,可以打开图片进行浏览。
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--图片浏览器相关推荐
- java课程设计图片浏览器_java课程设计图片浏览器
[实例简介] 图片浏览器最基本的功能是能浏览一个目录中的所有图片,并可以点击浏览上一张图片或者下一张图片,还有对图片放大与缩小,或者翻转图片等操作,在这里,实现了图片的浏览功能,导航功能(下一张.上一 ...
- java 简单图片浏览器_Java实现简单的图片浏览器
第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...
- Java实现简单的图片浏览器
第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...
- linux 浏览器源码下载,Android开发:图片浏览器源码
Android 图片浏览器源码,是你学习Android很好的例子,希望对你的学习有帮助. main.xml android:layout_width="fill_parent" a ...
- 【Android 应用开发】AndroidUI设计 之 图片浏览器
图片浏览器效果图 : 源码下载地址 : -- CSDN : http://download.csdn.net/detail/han1202012/6875083 -- GitHub : https:/ ...
- 基于RecyclerView的图片浏览器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.作业要求 二.具体实现 1.布局代码 2.程序代码 总结 前言 基于RecyclerView的图片浏览器 一.作业 ...
- java 图片不失真缩放,ico格式图片转换,透明图层,jar->exe
Java 图片缩放,转ico格式 Java 在转换图片格式为 ico 时 需要引入 image4j 的依赖,这里分享一个自己写好的并通过exe4j 打包好的exe小程序.因为功能太少所以再引入 thu ...
- Android界面编程之简单的图片浏览器
Android界面编程之简单的图片浏览器 在进行android编程之前,我们首先要明确一下几点: 1.安卓开发中各种资源所在的位置以及自己编写时应该放到的位置: android项目中所有的资源都放到r ...
- java图片处理以及pdf转图片
java图片处理以及pdf转图片 1.需求 之前项目里面有用到显示pdf的模块,需要将pdf显示处理,也结合了一些插件,pdf.js是firefox浏览器推出的一套h5渲染pdf的前端插件,支持移动端 ...
- 轴旋转——制作别样的图片浏览器
首页 博客 学院 下载 GitChat TinyMind 论坛 问答 商城 VIP 活动 招聘 ITeye CSTO 写博客 发Chat 贵公子丶笔记 千里之行,始于足下. RSS订阅 转 Andro ...
最新文章
- Android自定义滑动验证条
- python的优缺点有哪些-python的优缺点有哪些
- 深入理解JVM虚拟机(十一):线程安全与锁优化
- 项望烽:移动 IM 开发之登录优化
- WordPress里的PHP AJAX call
- 根据大小分割大文本_基于深度学习的图像分割在高德地图的实践
- HTML+CSS+JS实现 ❤️3D洞穴无限延伸动画特效❤️
- mysql分组失效_请教MySql中使用表子查询时,试着先排序后分组,出现排序失效的原因?...
- Docker学习总结(18)——阿里超大规模Docker化之路
- eclipse查找指定行数
- AcWing 166. 数独
- 云计算需要更强大的管理工具
- (转)递归算法的时间复杂度终结篇与Master method
- MATLAB数学建模教学 | 史上最强的MATLAB学习网站,你需要的这里统统都有!!!
- 占内存小的android浏览器,一点浏览器占内存吗 世界最小浏览器使用评测
- 如何查看MySQL的表空间
- 修复Ubuntu文件系统
- 玩转华为数据中心交换机系列 | 汇总
- 医学成像技术简介(CT,MRI等)及相关论坛、技术应用链接
- 股票移动平均线matlab,matlab – 计算移动平均线