Java--图片浏览器
功能:启动后选择打开文件,可以打开图片进行浏览。
v 1.0 :支持上一张 下一张功能。(欠缺,窗口大小未随着图片大小而改变)
- import java.awt.BorderLayout;
- import java.awt.EventQueue;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.File;
- import java.io.IOException;
- import javax.imageio.ImageIO;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JFileChooser;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JOptionPane;
- import javax.swing.JToolBar;
- public class TestMenu extends JFrame {
- private JToolBar toolBar = new JToolBar();
- private JButton up = new JButton("up");
- private JButton down = new JButton("down");
- private JLabel label;
- private JFileChooser chooser;
- private static String[] currentPath = new String[10000];// 最多一万张图片
- private static int dirPhotoCount = 0;
- private static boolean flag = false; //user yes or not open dir
- public static void getFileNameToFullPhotoArray(String dirPath) {
- String path = dirPath;
- File f = new File(path);
- if (!f.exists()) {
- System.out.println(path + " not exists");
- return;
- }
- int cut = 0;
- File fa[] = f.listFiles();
- for (int i = 0; i < fa.length; i++) {
- File fs = fa[i];
- try {
- if (ImageIO.read(fs) != null) { // Yes or not photo style file.
- currentPath[cut++] = dirPath + "\\" + fs.getName();
- }
- } catch (IOException ex) {
- }
- }
- dirPhotoCount = cut;
- }
- public TestMenu() {
- super();
- setTitle("PHOTO viewer");
- getContentPane().add(toolBar, BorderLayout.NORTH);
- label = new JLabel();
- this.chooser = new JFileChooser();// java provide file selected
- chooser.setCurrentDirectory(new File("."));// view path
- JMenuBar jmb = new JMenuBar();
- setJMenuBar(jmb);
- JMenu fileMenu = new JMenu("File");
- JMenuItem jmiExit = new JMenuItem("Exit");
- JMenuItem jmiOpen = new JMenuItem("Open");
- jmb.add(fileMenu);
- toolBar.add(up);
- toolBar.add(down);
- getContentPane().add(toolBar, BorderLayout.NORTH);
- add(label);
- jmb.add(fileMenu);
- fileMenu.add(jmiOpen);
- fileMenu.add(jmiExit);
- up.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (flag) {
- String dir = chooser.getSelectedFile().getParent();
- getFileNameToFullPhotoArray(dir);// current dir build photo array
- String currentImage = label.getIcon().toString();
- for (int i = 0; i < dirPhotoCount; i++) {
- if (currentPath[i].equals(currentImage)) {
- label.setIcon(new ImageIcon(currentPath[i == 0 ? dirPhotoCount - 1 : i - 1]));
- break;
- }
- }
- } else {
- JOptionPane.showMessageDialog(null, "当前无图片,请选择正确文件", "打开失败", JOptionPane.ERROR_MESSAGE);
- }
- }
- });
- down.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if (flag) {
- String dir = chooser.getSelectedFile().getParent();
- getFileNameToFullPhotoArray(dir);// 对当前目录建立图片数组
- String currentImage = label.getIcon().toString();
- for (int i = 0; i < dirPhotoCount; i++) {
- if (currentPath[i].equals(currentImage)) {
- label.setIcon(new ImageIcon(currentPath[i == dirPhotoCount - 1 ? 0 : i + 1]));
- break;
- }
- }
- } else {
- JOptionPane.showMessageDialog(null, "当前无图片,请选择正确文件", "打开失败", JOptionPane.ERROR_MESSAGE);
- }
- }
- });
- jmiOpen.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- int result = chooser.showOpenDialog(null);
- if (result == JFileChooser.APPROVE_OPTION) {
- try {
- if (ImageIO.read(chooser.getSelectedFile()) != null) { // 判断是否是图片文件
- flag = true;
- String name = chooser.getSelectedFile().getPath();
- label.setIcon(new ImageIcon(name));
- } else {
- JOptionPane.showMessageDialog(null, "请选择正确文件", "打开失败", JOptionPane.ERROR_MESSAGE);
- }
- } catch (IOException ex) {
- }
- }
- }
- });
- jmiExit.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- System.exit(0);
- }
- });
- }
- public static void main(String args[]) {
- EventQueue.invokeLater(new Runnable() {// using Runnable anonymous
- // object
- public void run() {
- JFrame frame = new TestMenu();
- frame.setSize(500, 400);
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setVisible(true);
- }
- });
- }
- }
Java--图片浏览器的更多相关文章
- Java实现简单的图片浏览器
第一次写博客,不喜勿喷. 最近一个小师弟问我怎么用Java做图片浏览器,感觉好久没玩Java了,就自己动手做了一下. 学校的教程是用Swing来做界面的,所以这里也用这个来讲. 首先要做个大概的界面出 ...
- 一步一步打造自己的Android图片浏览器(原创)
今天我们试着来制作一个自己的Android图片浏览器. 图片浏览器应该具有什么功能呢?鉴于不同的人不同的理解,这里提出一个基本的需求: 搜索手机内的所有图片,展示于一个列表中: 列表中展示的是图片的缩 ...
- Atitit图片复制父目录给你设计的实现 基于win 图片浏览器
Atitit图片复制父目录给你设计的实现 基于win 图片浏览器 打开属性,获取其路径...1 Ahk参数传递,使用环境变量即可1 如何ahk异常转换为java异常1 如何获取ahk的输出.1 C:\ ...
- java模拟浏览器包selenium整合了htmlunit,火狐浏览器,IE浏览器,opare浏览器驱
//如果网页源码中有些内容是js渲染过来的,那你通过HttpClient直接取肯定取不到,但是这些数据一般都是通过异步请求传过来的(一般都是通过ajax的get或者post方式).那么你可以通过火狐浏 ...
- 【Android 应用开发】AndroidUI设计 之 图片浏览器
图片浏览器效果图 : 源码下载地址 : -- CSDN : http://download.csdn.net/detail/han1202012/6875083 -- GitHub : https:/ ...
- Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式
Android开发工程师文集-Fragment,适配器,轮播图,ScrollView,Gallery 图片浏览器,Android常用布局样式 Fragment FragmentManager frag ...
- [Android] 对自定义图片浏览器经常内存溢出的一些优化
首先关于异步加载图片可以参见 夏安明 的博客:http://blog.csdn.net/xiaanming/article/details/9825113 这篇文章最近有了新的更改,大概看了一下,内容 ...
- AndroidUI设计 之 图片浏览器
图片浏览器效果图 : 源码下载地址 : -- CSDN : http://download.csdn.net/detail/han1202012/6875083 -- GitHub : https:/ ...
- 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等
在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...
- iOS开发系列--无限循环的图片浏览器
--UIKit之UIScrollView 概述 UIKit框架中有大量的控件供开发者使用,在iOS开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...
随机推荐
- Alpha冲刺总结报告
一.项目预期计划 允许粗糙的美工设计.由于是毫无经验的人生第一次,必定在开发过程中会遇到许多的问题,因而我们必定会花费不少时间在学习和debug上. 实现除了他山之石和规则系统以外的所有内容. 在日历 ...
- mysql---增删用户
Mysql创建.删除用户 MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个 ; 表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql - ...
- ubuntu下配置ss并设置PAC模式
一.安装ss 1. sudo apt-get update(更新源) 2. sudo apt-get install python-pip(安装pip) 3. sudo pip install sha ...
- Linux安装weblogic
一.软件安装 1. 安装前的准备工作 1.1 首先请确认您要安装的WebLogic版本所在的平台已通过了BEA的认证,完整的认证平台列表请参考 http://e-docs.bea.com/wls/ce ...
- 【Nginx】均衡负载权重模式实现session数据同步
思路:把session存放到一个公共redis服务器上 每次浏览器请求服务端都会带上cookie,因为使用的是权重负载均衡方案,因此nginx反向代理服务器会把请求发放到不同的服务端,服务端用cook ...
- UserAgent 设置 php 抓取网页
转载:http://www.webkaka.com/tutorial/php/2013/111846/ hp抓取网页,可谓轻而易举,几行代码就可以搞定.不过,如果你有所疏忽,程序写得不够严密,就会出现 ...
- 数据库引擎InnoDB和MyISAM区别
MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...
- 第124天:移动web端-Bootstrap轮播图插件使用
Bootstrap JS插件使用 > 对于Bootstrap的JS插件,我们只需要将文档实例中的代码粘到我们自己的代码中> 然后作出相应的样式调整 Bootstrap中轮播图插件叫作Car ...
- java 集合 父类的使用子类的方法时候 底层自动转型为子类的数据类型
跟继承多态不一样 继承多态需要显示转型
- Infinity NaN undefined和null
Infinity属性用于存放表示正无穷大的数值. 负无穷大是表示负无穷大一个数字值. 该属性为Global对象的一个只读属性, 所有主流浏览器均支持该属性. Infinity属性的值为Number类型 ...