Java实现简单的图片浏览器

时间:2022-09-19 08:36:52

第一次写博客,不喜勿喷。

最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下。

学校的教程是用Swing来做界面的,所以这里也用这个来讲。

首先要做个大概的界面出来,eclipse有一个很好用的插件叫做WindowBuilder,可以可视化编辑界面,自动帮你生成代码。

界面如下:

Java实现简单的图片浏览器

可能有些同学不知道图片该怎么弄出来,其实很简单。

创建一个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实现简单的图片浏览器的更多相关文章

  1. java生成简单验证码图片

    概要 最近项目需要用java实现输出随机验证码图片到前台,正好有机会接触下java的绘图类,完成需求后也有时间做个总结,写篇随笔记录下也希望能帮助到有同样需求的人! 需求流程图 1.生成随机数 在ja ...

  2. 使用qt写的简单的图片浏览器

    功能特别简单,支持png,jpg,bmp,gif文件,支持自适应窗口大小,支持放大缩小,旋转功能还有点问题,支持上下按键选择图片 因为初学qt,所以很多东西都不太会,而且c++学的不是太好,没有怎么使 ...

  3. Android -- 简单的图片浏览器

    1. 效果图

  4. C&num; L该系统的应用istView简单的图像浏览器

    最近有同学问我怎么用ListView加载图像列表,在...前面"C#系统中的应用"于TreeView+ListView+ContextMenuStrip控件实现树状图显示磁盘文件夹 ...

  5. 用Java制作一个简单的图片验证码

    //Java实现简单验证码功能 package project; import java.awt.Color; import java.awt.Font;import java.awt.Graphic ...

  6. 制作一个简单的WPF图片浏览器

    原文:制作一个简单的WPF图片浏览器 注:本例选自MSDN样例,并略有改动.先看效果: 这里实现了以下几个功能:1.  对指定文件夹下所有JPG文件进行预览2.  对选定图片进行旋转3.  对选定图片 ...

  7. android脚步---简单图片浏览器改变图像透明度

    图片浏览器调用ImageView的setAlpha方法来实现改变图片透明度. main.xml文件如下:三个按钮,两个imageview,,界面定义了两个ImageView,一个是显示局部图片的Ima ...

  8. java实现简单的单点登录

    java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...

  9. UEditor之实现配置简单的图片上传示例

    UEditor之实现配置简单的图片上传示例 原创 2016年06月11日 18:27:31 开心一笑 下班后,阿华到楼下小超市买毛巾,刚买完出来,就遇到同一办公楼里另一家公司的阿菲,之前与她远远的有过 ...

随机推荐

  1. LR通过snmp监控linux下的mysql

    LR通过snmp监控linux下的mysql 在linux底下安装配置snmp: 1.使用系统盘安装rpm包(这种方式最好) 2.在www.net-snmp.org处下载net-snmp安装(安装后有 ...

  2. spring mvc对静态资源的访问

    如果我们的项目使用的是springmvc,在web.xml中会有一段这的配置. <servlet> <servlet-name>springMvc</servlet-na ...

  3. PHP随机函数【上】

    随机函数应用的场景很多,比如验证码,token,订单号等.由浅入深了解常用随机函数 1.rand 常用的随机数字函数,默认生成[0,getrandmax()]之间的随机数(包括边界值),因性能问题已被 ...

  4. Problem &colon; 1012 &lpar; u Calculate e &rpar;

    /*tips:本题只有输入,没有输出,在线测试只检测结果,所以将前面几个结果罗列出来就OK了.为了格式输出问题纠结了半天,最后答案竟然还是错的....所以啊,做题还是得灵活变通.*/ #include ...

  5. python实现一个二分查找

    二分查找: 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列 查找过程: 首先,假设表中元素是 ...

  6. 【MLE】最大似然估计Maximum Likelihood Estimation

    模型已定,参数未知 已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值.最大似然估计是建立在这样的思想上:已知某个参数能使这个 ...

  7. Android 中自定义控件和属性&lpar;attr&period;xml&comma;declare-styleable&comma;TypedArray&rpar;的方法和使用

    一. 在res/values 文件下定义一个attrs.xml 文件.代码如下: <?xml version="1.0" encoding="utf-8" ...

  8. 云计算之路-阿里云上:消灭&OpenCurlyDoubleQuote;黑色n秒”第一招——不让CPU空闲

    昨天对“黑色n秒”问题的最终猜想以失败而告终,从而让我们结束了被动猜想阶段,进入了主动进攻阶段——出招. 今天出第一招——用C#写个小程序,让其在每个CPU核上运行一个线程,不让任何一个CPU核进入空 ...

  9. gerrit上sshkey设置问题

    gerrit里面设置ssh的方法  http://blog.sina.com.cn/s/blog_4d4bc1110101dbxs.html `ssh-keygen -t dsa -b 1024` d ...

  10. Redis中RedisTemplate和Redisson管道的使用

    当对Redis进行高频次的命令发送时,由于网络IO的原因,会耗去大量的时间.所以Redis提供了管道技术,就是将命令一次性批量的发送给Redis,从而减少IO. 一.Jedis对redis的管道进行操 ...