已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
package ioStream;import java.awt.AWTEvent;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.AWTEventListener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener;import java.awt.geom.AffineTransform;import java.io.File;import java.util.LinkedList;import java.util.List;import javax.swing.ImageIcon;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.Timer;import javax.swing.UIManager;import javax.swing.filechooser.FileNameExtensionFilter;/* * 该代码意在实现照片查看器的功能 * 当按下“右箭头”时浏览下一张图片 * 当按下“左箭头时浏览上一张图片 * 实现循环浏览 * 当按下Ecs时推出全屏浏览模式 * 当按下CTRL+“上箭头”时,全屏显示 * 只能浏览指定文件夹下面的所支持格式的图片(gif,jpg,png) *链表的大小与他的最大角标相隔1 */public class PicsViewer static JFrame frame0;/原始的全屏显示的窗口static int SWidth=Toolkit.getDefaultToolkit().getScreenSize().width;static int SHeight=Toolkit.getDefaultToolkit().getScreenSize().height;static Image icon=(new ImageIcon(PicsViewer/img.png).getImage();/框架图标JFileChooser chooser;/声明一个文件选择器对象 static JPanel imgjp;static Image img0=(new ImageIcon(image/cat.png).getImage();/默认的一张图片 File files; static int j=0; static int k=0; static File root; static int i=0; Timer T00; String Str;/获取文件名字符串 static Image img; static int xCoor,yCoor;/打印图片的左上角坐标 static int PWidth,PHeight;/图片的宽高(小于屏幕宽高的时候的) static int PWidth0,PHeight0;/图片宽高大于屏幕宽高的时候的图片宽高 String CPath;/直接获得的路径 String newPath;/经过转换后的路径 static List list=new LinkedList(); int index=0; static int index0=0; static double xCoor0=1,yCoor0=1;/图片在X轴缩放的倍数,图片在Y轴的缩放倍数; static boolean isFull=true;/是否全屏显示 static int now;/当前正在使用的图片public PicsViewer() frame0=new JFrame();imgjp=new ImgsPanel();imgjp.setBackground(new Color(51,51,51); frame0.add(imgjp); frame0.setTitle(PicsViewer1.0); frame0.setSize(SWidth,SHeight); frame0.setUndecorated(isFull); frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /不设置窗口的位置,是因为窗口默认的位置就是在桌面的左上角 frame0.setIconImage(icon);/设置窗口图标 frame0.setVisible(true); /* * 程序一启动就弹出文件选择对话框让用户选择所要浏览的图片 */ try UIManager.setLookAndFeel(com.sun.java.swing.plaf.windows.WindowsLookAndFeel);/设置为当前操作系统的外观 JFileChooser chooser = new JFileChooser();chooser.setDialogTitle(请选择要查看的图片);chooser.addChoosableFileFilter(new FileNameExtensionFilter(常见图片格式, jpg, gif, png);chooser.showOpenDialog(frame0);int returnVal = chooser.showOpenDialog(frame0); if(returnVal = JFileChooser.APPROVE_OPTION) img=(new ImageIcon(chooser.getSelectedFile().toString().getImage(); CPath=chooser.getCurrentDirectory().toString()+System.getProperty(file.separator); newPath=CPath.replaceAll(,/);/路径转换 root=new File(newPath); img0=img; imgjp.repaint(); findImage(root); catch (Exception evt) Toolkit toolkit = Toolkit.getDefaultToolkit(); toolkit.addAWTEventListener(new ShortcutKeyListener(), AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK| AWTEvent.WINDOW_EVENT_MASK); /*添加键盘监听事件,当点击键盘上的方向键右键时浏览下一张图片,点击左箭头浏览上一张,当按下上箭头时对当前图片进行放大操作 * 当按下下箭头时,对当前浏览的图片进行缩小操作 * 同时添加鼠标滚轮监听事件,也对当前图片进行缩放操作 * */ imgjp.addMouseWheelListener(new MouseWheelListener() public void mouseWheelMoved(MouseWheelEvent e) if(e.getWheelRotation()0)/如果鼠标滚轮向上滚动,则放大图片 else/否则缩小图片 ); public void findImage(File dir)File files=dir.listFiles();/得到当前路径下的所有文件和文件夹 for(int i=0; ifiles.length; i+) Str=new Stringfiles.length; Stri=filesi.getAbsolutePath();/将路径和文件名存入字符串数组 /使用链表替代数组 if(Stri.endsWith(.jpg)|Stri.endsWith(.gif)|Stri.endsWith(.png)=true) list.add(index,(new ImageIcon(Stri).getImage(); index+; /画图的算法有点问题?static class ImgsPanel extends JPanelprivate static final long serialVersionUID = 1L;public void paintComponent(Graphics g)super.paintComponent(g);Graphics2D G2=(Graphics2D)g; AffineTransform Trans=new AffineTransform();PWidth=img0.getWidth(null);PHeight=img0.getHeight(null);if(PWidth=SWidth&PHeightSWidth|PHeightSHeight) yCoor0=SHeight/(PHeight*1.0); PHeight0=SHeight; PWidth0=(int)(PWidth*yCoor0); xCoor0=yCoor0; xCoor=(SWidth-PWidth0)/2; yCoor=-(PHeight0-SHeight)/2; Trans.scale(xCoor0,yCoor0);/对图片的缩放操作 / G2.setTransform(Trans); G2.drawImage(img0,xCoor,yCoor,PWidth0,PHeight0,this); static class Tim implements ActionListenerpublic void actionPerformed(ActionEvent e)/看来变量最好不要用相同的变量名img0=(Image)(list.get(index0);index0+;if(index0=list.size()index0=0;img0=(Image)(list.get(index0);index0+;imgjp.repaint(); imgjp.repaint();static class ShortcutKeyListener implements AWTEventListener public void eventDispatched(AWTEvent e) if (e.getClass() = KeyEvent.class) / 被处理的事件是键盘事件. KeyEvent keyEvent = (KeyEvent) e; if (keyEvent.getID() = KeyEvent.KEY_PRESSED) keyPressed(keyEvent); else if (keyEvent.getID() = KeyEvent.KEY_RELEASED) keyReleased(keyEvent); /* * 当只有一张图片是抛出异常,不能使用左右方向键,待解决 */ private void keyPressed(KeyEvent e) switch(e.getKeyCode() case KeyEvent.VK_RIGHT: if(list.size()!=1) img0=(Image)(list.get(index0);now=index0;index0+; if(index0=list.size()-1) index0=0; img0=(Image)(list.get(index0); now=index0;index0+;imgjp.repaint(); imgjp.repaint(); else img0=(Image)(list.get(index0); imgjp.repaint(); break; case KeyEvent.VK_LEFT: if(list.size()!=1) if(index00) img0=(Image)(list.get(index0);now=index0;index0-; imgjp.repaint(); if(index00) index0=list.size()-1; img0=(Image)(list.get(index0);now=index0;index0-; imgjp.repaint(); else index0=list.size()-1; img0=(Image)(list.get(index0);now=index0;index0-; imgjp.repaint(); break; case KeyEvent.VK_ESCAPE:isFull=false; frame0=new JFrame();imgjp=new ImgsPanel();imgjp.setBackground(new Color(51,51,51); frame0.add(imgjp); frame0.setTitle(PicsViewer1.0); frame0.setSize(SWidth,SHeight); fram
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024北京首师大附中高三10月月考化学试题及答案
- 2024北京一零一中高三(上)统练六化学试题及答案
- 可靠性工程师可靠性数据收集与分析
- 学生贷款申请与还款指南
- 安全生产法律法规与合规操作指南
- 基建工程造价工程师工程造价师职业规划
- 2025 小学二年级数学下册万以内数(实践:统计图书馆借阅量)课件
- 2025 小学二年级数学下册推理 连线法示范 课件
- 工程总承包EPC项目招标及投标要点
- 库房管理岗位面试实战模拟如何提升团队协作能力
- 医院科室质控工作汇报
- WST854-2025血液透析中心医院感染预防与控制标准解读
- 感染性心内膜炎护理查房
- 昏迷患者营养支持标准流程
- 人教版物理八年级上册第五章第四节《眼睛和眼镜》同步训练(解析版)
- 祈年殿教学课件
- 输血安全护理课件
- 汾酒营销活动方案
- 胃肠镜的心理护理
- 直播公司主播管理制度
- 《人生海海》名著导读好书
评论
0/150
提交评论