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开发中不仅可以直接使用这些控件还可以在这些控件的基础上进行扩展打造自己的控件.在这个系列中如果每个控件 ...
 
随机推荐
- 2018软工实践—Alpha冲刺(3)
			
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 协助后端界面的开发 搭建项目运行的服务器环境 ...
 - Java GUI 点击按钮退出
			
import java.awt.*; import java.awt.event.*; public class TestFrameTwo implements ActionListener { Fr ...
 - 学习c++ofstream和ifstream
			
定义数据流对象指针 对文件进行读写操作首先必须要定义一个数据流对象指针,数据流对象指针有三种类型,它们分别是: Ifstream:表示读取文件流,使用的时候必须包含头文件"ifstream& ...
 - 用vs调试项目的时候报HTTP 错误 403.14 - Forbidden
			
曾经遇到过这种诡异的问题,你一定想不到,这个可能是因为你用svn合并的时候,导致了你的dll文件出了问题. 竟然可以用主干的dll替换的方式,解决掉这个问题.
 - Microsoft Orleans  之 开发人员指南
			
开发一个Grain 在开发Grain之前请先阅读Grains 这篇文章 Grain 接口 Grains通过调用各自定义在接口中的方法相互作用,一个grain实现了事先定义好的一个或多个接口,grain ...
 - 【设计模式】C++中的单例模式
			
讲解来自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4281275&uid=26611383 由于使用了POSIX函 ...
 - Struts的default.properties五个配置    一般利用按着配置文件的加载的顺序,后面文件和前面文件相同的配置,后面的会把前面的文件的值覆盖的原则 在struts.xml里面进行配置
			
1 struts.i18n.encoding=UTF-8 配置编码 2 struts.action.extension=action,, 配置浏览器访问地址的后缀 3 struts.devMode = ...
 - bzoj1390 [CEOI2008] Fence
			
题意 给出n个白点和m个黑点.现在你需要选择一些白点把黑点圈起来.每有一个黑点不能被选出的白点组成的凸包包含就需要付出111的代价,每选出一个白点就需要付出20的代价.要求最小化代价之和 n,m< ...
 - 【bzoj3110】[Zjoi2013]K大数查询  整体二分+树状数组区间修改
			
题目描述 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c.如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数 ...
 - selenium学习网址
			
1.http://www.testclass.net/selenium_java/# testclass网址 2.http://www.yiibai.com/selenium/seleniu ...