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

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

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

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

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

界面如下:

a4174859dd25daafd0506a892c8a99f2.png

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

创建一个JLabel,然后里面不要写字。JLabel有一个icon的属性,照片就放在这里面。

这里要注意的是,WindowBuilder生成的界面代码一般是放在构造方法里面的,里面的变量都是局部变量。而这个JLabel要设置为全局变量,因为之后的图片切换要用到这个变量。

1 Img = new JLabel("");2 Img.setIcon(new ImageIcon(" 这里写照片的地址 "));3 Img.setBounds(14, 13, 404, 257);4 contentPane.add(Img);

因为时间有限,没有做图片自适应。这里贴一个图片自适应的教程。

然后我们只需要更换图片的地址,就能让JLabel显示不同的图片,实现图片浏览器的功能。

首先我们可以给之前做好的“open”按钮添加一个点击事件,点击后可以调用JFileChooser来浏览本地的文件,获取到选中的文件地址,然后存入ImgList保存。

1 public voidactionPerformed(ActionEvent e) {2 //初始化文件选择器

3 JFileChooser jfc=newJFileChooser();4 jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES );5 //弹出选择文件的界面

6 jfc.showDialog(new JLabel(), "选择");7 File file=jfc.getSelectedFile();8 //pasePath是一个分析文件的方法,主要是用于判断读取到的是文件夹还是文件,并将其中的图片类型的文件地址存到ImgList中。

9 pasePath(file.getAbsolutePath());10 //最后显示读取到的第一张图片。

11 if(imglist.size()>0) {12 String[] list = (String[])imglist.get(0);13 Img.setIcon(new ImageIcon(list[0]));14 }15 }

//分析文件的方法

public voidpasePath(String path) {

imglist.clear();//清理掉之前的图片地址。

File file = newFile(path);//如果是文件,就分析文件的后缀名是不是jpg或者png,如果是就存进imglist。

if (!file.isDirectory()) {

String absolutepath=file.getAbsolutePath();

String name=file.getName();

String[] list= newString[] {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= newString[] {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]));

}

最后的运行结果:

感谢阅读~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

60. Spring Boot写后感【从零开始学Spring Boot】

从2016年4月15日到2016年7月20日经历长达3个月的时间&#xff0c;【从零开始学习Spring Boot】系列就要告一段落了。国内的各种资源都比较乱或者是copy 来copy去的&#xff0c;错了也不加以修正下&#xff0c;导致通过百度找到的资源可能都是错误的&#xff0c;正是由于这么一种…

五角星

import turtle turtle.setup(600,400,0,0) turtle.bgcolor(red) turtle.color(yellow) turtle.fillcolor(yellow) turtle.begin_fill() for i in range(5):turtle.forward(200)turtle.right(144) turtle.end_fill()turtle.done()转载于:https://www.cnblogs.com/Paris-YY/p/900…

java customerservlet_顾客管理系统java+servlet

首先我先搭好网页的框架先写一个登陆的html&#xff0c;名字是login.html1)在js中跳转页面的方法&#xff0c;我这里用的是get提交&#xff0c;只传递了一个name。function mylogin() {var usernamedocument.getElementById("name").value;window.location.href"…

php输出数据过大,PHPExcel导出数据量过大处理

转&#xff1a;ASP&period;NET MVC3 Model验证总结http://www.wyjexplorer.cn/Post/2012/8/3/model-validation-in-aspnet-mvc3 ASP.NET MVC3中的Model是自验证的,这是通 ...C&plus;&plus; 我想这样用(六)嗯,上一篇已经介绍了面向过程编程的语法知识,接下来是最后的…

计算球面上经纬度坐标方法比较

计算球面上的两点(坐标为经纬度)之间的距离可以直接通过公式计算得到&#xff0c;也可以先将经纬度坐标转化为墨卡托投影坐标来,然后用平面中两点之间的距离公式来计算。 在网上找了一些代码&#xff0c;然后简单进行了测试&#xff0c;发现前者精度更高&#xff1a; 资料来源&…

mysql给root开启远程访问权限,修改root密码

1.MySql-Server 出于安全方面考虑只允许本机(localhost, 127.0.0.1)来连接访问. 这对于 Web-Server 与 MySql-Server 都在同一台服务器上的网站架构来说是没有问题的. 但随着网站流量的增加, 后期服务器架构可能会将 Web-Server 与 MySql-Server 分别放在独立的服务器上, 以便得…

Docker - Docker中搭建MySQL主从

1.pull完centos7纯净版的镜像后&#xff0c;创建容器&#xff0c;然后将宿主机上下载的MySQL文件 (MySQL下载地址&#xff1a;http://mysql.mirror.kangaroot.net/Downloads/) 拷贝到Docker容器中。 1) 抓取centos7纯净版镜像# docker pull registry.cn-hangzhou.aliyuncs.com/…

java 上传远程图片,java上传图片到另一台服务器上,怎么解决

Java codepublic String upload(String dir, FormFile formFile) throws Exception {Date date new Date();//取欲上传的文件的名字和长度String fname formFile.getFileName();//将上传时间加入文件名int i fname.indexOf(".");String name String.valueOf(date…

Qt_Window@Qt Command Prompt从命令行创建工程

#include <QApplication> #include <QLabel>int main(int argc, char *argv[]) {QApplication app(argc, argv);QLabel *label new QLabel("Hello Qt!");label->show();return app.exec(); }第1 行和第2 行包含了两个类的定义&#xff1a;QApplicat…

linux中的守护进程

一、守护进程守护进程&#xff0c;也叫精灵进程&#xff08;daemon&#xff09;它和普通后台进程的区别在于以下三点1、守护进程自成会话&#xff0c;而普通后台进程则不一定2、守护进程不受终端的控制3、守护进程就是后台进程&#xff0c;而后台进程不同于守护进程用ps axj命令…

读取不同位置的配置文件

在开发和测试环境中&#xff0c;很容易混淆如何获取不同位置的配置文件。为了避免重复造轮子&#xff0c;在此记录一下自己的解决方案&#xff1a; 可以提出如下设想&#xff1a; 1、在开发环境下&#xff0c;读取resources下的config.properties文件    2、在生产环境下&a…

spring+log4j

Log4j是Apache的一个开放源代码项目&#xff0c;通过使用Log4j&#xff0c;我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等&#xff1b;我们也可以控制每一条日志的输出格式&#xff1b;通过定义每一条…

mysql主从复制 lvs+ keepalived

2019独角兽企业重金招聘Python工程师标准>>> 一、环境 Master&#xff08;主机A&#xff09;&#xff1a;192.168.1.1 Slave&#xff08;主机B&#xff09; &#xff1a;192.168.1.2 W-VIP&#xff08;写入&#xff09; &#xff1a;192.168.1.3 R-VIP&#xff…

php 逗号编码,php有几种编码

当前 mbstring 模块支持以下的字符编码。这些字符编码中的任意一个都能指定到 mbstring 函数中的 encoding 参数。该 PHP 扩展支持的字符编码有以下几种&#xff1a;UCS-4*UCS-4BE (推荐学习&#xff1a;PHP视频教程)UCS-4LE*UCS-2UCS-2BEUCS-2LEUTF-32*UTF-32BE*UTF-32LE*UTF-…

34 丑数

把只包含因子2、3和5的数称作丑数&#xff08;Ugly Number&#xff09;。例如6、8都是丑数&#xff0c;但14不是&#xff0c;因为它包含因子7 。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数 Java: 1 public class Solution {2 public int GetUglyNumbe…

oracle 导入导出

oracle 导入导出 CREATE TABLESPACE LCZYM LOGGING DATAFILE G:\ZYM_DB\LCZYM.ora SIZE 1000M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; 导出 exp 用户名/密码数据库 file路径 owner用户名 logc:\orabackup\hkbfull.log 删除此用户所有对象 drop user emi…

[TODO]Python拾遗(三)

Head First 系列书 这个系列的书很少有其他专业书里面看似很高大上的名词&#xff0c;只有一些最基本的概念&#xff0c;而且遵循的就是"learning by doing"的理念&#xff0c;每一章都是以编程例子为主的。《Head First Python》更夸张&#xff0c;全书其实就一个pr…

php+tp框架+API,【路由】利用Thinkphp路由实现API开发版本管理

# 前言*****### 在使用Thinkphp接口开发项目的程中可能会遇到这样的场景 准备将原有系统重构一遍&#xff0c;但是出于某种原因&#xff0c;老的系统在未来一段时间内必须和新的版本共存&#xff1b; APP存在老版本不能强制升级&#xff0c;所以服务端接口需要同时兼容新老客户…

jmeter命令行运行-分布式测试

秒秒开心jmeter命令行运行-分布式测试 上一篇文章我们说到了jmeter命令行运行但是是单节点下的&#xff0c; jmeter底层用java开发&#xff0c;耗内存、cpu&#xff0c;如果项目要求大并发去压测服务端的话&#xff0c;jmeter单节点难以完成大并发的请求&#xff0c;这时就需要…

水龙吟

人长是、多怨我&#xff0c;怎如今、情词穷尽。文墨浅薄,一字不题,忧恨难泄。闻说古今&#xff0c;才子佳人,难成双美。柳七一句,玉萧声断。 人已去、玉长在&#xff0c;莽匹夫、世故笑&#xff0c;轮转境台空觅梦。乱言疯语&#xff0c;一大快事,还看此篇。醉也未极,到梦中戏猴…