Java实现简单的图片浏览器
第一次写博客,不喜勿喷。
最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下。
学校的教程是用Swing来做界面的,所以这里也用这个来讲。
首先要做个大概的界面出来,eclipse有一个很好用的插件叫做WindowBuilder,可以可视化编辑界面,自动帮你生成代码。
界面如下:

可能有些同学不知道图片该怎么弄出来,其实很简单。
创建一个JLabel,然后里面不要写字。JLabel有一个icon的属性,照片就放在这里面。
这里要注意的是,WindowBuilder生成的界面代码一般是放在构造方法里面的,里面的变量都是局部变量。而这个JLabel要设置为全局变量,因为之后的图片切换要用到这个变量。
Img = new JLabel("");
Img.setIcon(new ImageIcon(" 这里写照片的地址 "));
Img.setBounds(14, 13, 404, 257);
contentPane.add(Img);
因为时间有限,没有做图片自适应。这里贴一个图片自适应的教程。
然后我们只需要更换图片的地址,就能让JLabel显示不同的图片,实现图片浏览器的功能。
首先我们可以给之前做好的“open”按钮添加一个点击事件,点击后可以调用JFileChooser来浏览本地的文件,获取到选中的文件地址,然后存入ImgList保存。
public void actionPerformed(ActionEvent e) {
//初始化文件选择器
JFileChooser jfc=new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );
//弹出选择文件的界面
jfc.showDialog(new JLabel(), "选择");
File file=jfc.getSelectedFile();
//pasePath是一个分析文件的方法,主要是用于判断读取到的是文件夹还是文件,并将其中的图片类型的文件地址存到ImgList中。
pasePath(file.getAbsolutePath());
//最后显示读取到的第一张图片。
if(imglist.size()>0) {
String[] list = (String[])imglist.get(0);
Img.setIcon(new ImageIcon(list[0]));
}
}
//分析文件的方法
public void pasePath(String path) {
imglist.clear();//清理掉之前的图片地址。
File file = new File(path);
//如果是文件,就分析文件的后缀名是不是jpg或者png,如果是就存进imglist。
if (!file.isDirectory()) {
String absolutepath=file.getAbsolutePath();
String name=file.getName();
String[] list = new String[] {absolutepath,name};
String[] strArray = file.getName().split("\\.");
System.out.println(strArray[strArray.length-1]);
if(strArray[strArray.length-1].equals("jpg")||strArray[strArray.length-1].equals("png")) {
imglist.add(list);
}
//如果不是文件,就存是文件夹,按上一个if语句内的写法,逐个分析文件夹内的文件。区别就是这个存进去的图片地址可能有很多个。
} else if (file.isDirectory()) {
System.out.println("文件夹");
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(path + "\\" + filelist[i]);
if (!readfile.isDirectory()) {
String absolutepath=readfile.getAbsolutePath();
String name=readfile.getName();
String[] list = new String[] {absolutepath,name};
String[] strArray = readfile.getName().split("\\.");
System.out.println(strArray[strArray.length-1]);
if(strArray[strArray.length-1].equals("jpg")||strArray[strArray.length-1].equals("png")) {
imglist.add(list);
} }
} }
}
到这里,我们已经可以读取到文件夹内的图片了。然后我们要给“上一个”,“下一个”按钮添加事件,在点击的时候切换图片。
其实就是很简单的一个判断语句,这是“上一个”按钮的判断语句。
如果imglist的大小大于0,说明列表内有东西。然后判断,如果现在读取的这个照片是0,那么肯定就没有上一个了,就读取最后一张照片。
我在这里用了一个全局变量 nowindex 表示当前读取到的图片,然后根据这个进行加减或赋值就可以进行切换了。
判断后重新设置图片的地址,就可以实现切换图片了。
“下一个”的事件就反过来做就行了。
if(imglist.size()>0) {
if(nowindex==0) {
nowindex=imglist.size()-1;
}else {
nowindex = nowindex-1;
}
String[] list = (String[])imglist.get(nowindex);
Img.setIcon(new ImageIcon(list[0]));
}
最后的运行结果:

感谢阅读~
Java实现简单的图片浏览器的更多相关文章
- java生成简单验证码图片
概要 最近项目需要用java实现输出随机验证码图片到前台,正好有机会接触下java的绘图类,完成需求后也有时间做个总结,写篇随笔记录下也希望能帮助到有同样需求的人! 需求流程图 1.生成随机数 在ja ...
- 使用qt写的简单的图片浏览器
功能特别简单,支持png,jpg,bmp,gif文件,支持自适应窗口大小,支持放大缩小,旋转功能还有点问题,支持上下按键选择图片 因为初学qt,所以很多东西都不太会,而且c++学的不是太好,没有怎么使 ...
- Android -- 简单的图片浏览器
1. 效果图
- C# L该系统的应用istView简单的图像浏览器
最近有同学问我怎么用ListView加载图像列表,在...前面"C#系统中的应用"于TreeView+ListView+ContextMenuStrip控件实现树状图显示磁盘文件夹 ...
- 用Java制作一个简单的图片验证码
//Java实现简单验证码功能 package project; import java.awt.Color; import java.awt.Font;import java.awt.Graphic ...
- 制作一个简单的WPF图片浏览器
原文:制作一个简单的WPF图片浏览器 注:本例选自MSDN样例,并略有改动.先看效果: 这里实现了以下几个功能:1. 对指定文件夹下所有JPG文件进行预览2. 对选定图片进行旋转3. 对选定图片 ...
- android脚步---简单图片浏览器改变图像透明度
图片浏览器调用ImageView的setAlpha方法来实现改变图片透明度. main.xml文件如下:三个按钮,两个imageview,,界面定义了两个ImageView,一个是显示局部图片的Ima ...
- java实现简单的单点登录
java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...
- UEditor之实现配置简单的图片上传示例
UEditor之实现配置简单的图片上传示例 原创 2016年06月11日 18:27:31 开心一笑 下班后,阿华到楼下小超市买毛巾,刚买完出来,就遇到同一办公楼里另一家公司的阿菲,之前与她远远的有过 ...
随机推荐
- Javaweb学习笔记8—DBUtils工具包
今天来讲javaweb的第8阶段学习. DBUtils技术,DBUtils是我们操作数据库很常用的功能,虽然后期使用都是它的封装结果,但是也需要掌握. 老规矩,首先先用一张思维导图来展现今天的博客内容 ...
- 一个SAP开发人员的双截棍之路
由于种种原因,Jerry最近加入了SAP成都研究院的一个演讲俱乐部,这个俱乐部主要是提高大家的英语演讲能力. 说来Jerry也是大一下期和大二上期一次性高分通过四六级考试的,但是当毕业进入SAP成都研 ...
- leetcode_1039. Minimum Score Triangulation of Polygon_动态规划
https://leetcode.com/problems/minimum-score-triangulation-of-polygon/ 题意:给定一个凸的N边形(N<=50),每个顶点有一个 ...
- 按名字寻找文件和文件夹 find命令
find <指定目录> <指定条件> <指定动作> find /home/bnrc/py-faster-rcnn/caffe-fast-rcnn/ -name 'd ...
- python之bool (布尔值)
用途: 判断真假 识记: 空的字符串是False,非空的就是True 0 是False,非0的都是True 格式: True False 布尔值转换成字符串: print(type(str(Tru ...
- Vue之computed与watch的使用
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 「 Luogu P2574 」 XOR的艺术——线段树
# 解题思路 这题不难,但是原谅我一开始的傻逼想法,一会儿再给大家透露透露. 先说怎么做这题. 显然对于 $0$ 和 $1$ 来说,异或无非也就只有两种变化 异或了奇数次,$0$ 就会变成 $1$,$ ...
- luogu P1618 三连击(升级版)
题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数的比例是A:B:C,试求出所有满足条件的三个三位数,若无解,输出“No!!!”. //感谢黄小U饮品完善题意 输入输出格 ...
- (12) OpenSSL主配置文件openssl.cnf
1.man config 该帮助文档说明了openssl.cnf以及一些其他辅助配置文件的规范.格式及读取方式.后文中的所有解释除非特别指明,都将以openssl.cnf为例. [root@local ...
- MariaDB数据库(二)
1. MariaDB数据类型 MariaDB数据类型可以分为数字,日期和时间以及字符串值. 使用数据类型的原则:够用就行,尽量使用范围小的,而不用大的. 1.1 常用的数据类型 整数:int,bit ...