聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> java照片查看器源代码

java照片查看器源代码

时间:    下载该word文档
packageioStream;
importjava.awt.AWTEvent;importjava.awt.Color;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.Image;
importjava.awt.Toolkit;
importjava.awt.event.AWTEventListener;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.KeyEvent;
importjava.awt.event.MouseWheelEvent;importjava.awt.event.MouseWheelListener;importjava.awt.geom.AffineTransform;importjava.io.File;
importjava.util.LinkedList;importjava.util.List;
importjavax.swing.ImageIcon;importjavax.swing.JFileChooser;importjavax.swing.JFrame;
importjavax.swing.JPanel;importjavax.swing.Timer;
importjavax.swing.UIManager;
importjavax.swing.filechooser.FileNameExtensionFilter;/*
*该代码意在实现照片查看器的功能*当按下“右箭头”时浏览下一张图片*当按下“左箭头"时浏览上一张图片*实现循环浏览
*当按下"Ecs"时推出全屏浏览模式
*当按下CTRL+“上箭头”时,全屏显示
*只能浏览指定文件夹下面的所支持格式的图片(gif,jpg,png*链表的大小与他的最大角标相隔1*/
publicclassPicsViewer{staticJFrameframe0;//原始的全屏显示的窗口
staticintSWidth=Toolkit.getDefaultToolkit(.getScreenSize(.width;staticintSHeight=Toolkit.getDefaultToolkit(.getScreenSize(.height;
staticImageicon=(newImageIcon("PicsViewer/img.png".getImage(;//框架图标JFileChooserchooser;//声明一个文件选择器对象staticJPanelimgjp;

staticImageimg0=(newImageIcon("image/cat.png".getImage(;//默认的一张图片
Filefiles;staticintj=0;staticintk=0;staticFileroot;staticinti=0;TimerT00;
String[]Str;//获取文件名字符串staticImageimg;
staticintxCoor,yCoor;//打印图片的左上角坐标
staticintPWidth,PHeight;//图片的宽高(小于屏幕宽高的时候的staticintPWidth0,PHeight0;//图片宽高大于屏幕宽高的时候的图片宽高StringCPath;//直接获得的路径
StringnewPath;//经过转换后的路径
staticListlist=newLinkedList(;intindex=0;
staticintindex0=0;
staticdoublexCoor0=1,yCoor0=1;//图片在X轴缩放的倍数,图片在Y轴的缩放倍数;staticbooleanisFull=true;//是否全屏显示staticintnow;//当前正在使用的图片publicPicsViewer({

frame0=newJFrame(;imgjp=newImgsPanel(;
imgjp.setBackground(newColor(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";//当前操作系统的外观


JFileChooserchooser=newJFileChooser(;chooser.setDialogTitle("请选择要查看的图片";
chooser.addChoosableFileFilter(newFileNameExtensionFilter("常见图片格式
","jpg","gif","png";chooser.showOpenDialog(frame0;




intreturnVal=chooser.showOpenDialog(frame0;
if(returnVal==JFileChooser.APPROVE_OPTION{img=(newImageIcon(chooser.getSelectedFile(.toString(.getImage(;
CPath=chooser.getCurrentDirectory(.toString(+System.getProperty("file.separator";newPath=CPath.replaceAll("\\\\","/";//路径转换

}
root=newFile(newPath;img0=img;


imgjp.repaint(;findImage(root;




}catch(Exceptionevt{}Toolkittoolkit=Toolkit.getDefaultToolkit(;
toolkit.addAWTEventListener(newShortcutKeyListener(,AWTEvent.KEY_EVENT_MASK|AWTEvent.MOUSE_EVENT_MASK|AWTEvent.WINDOW_EVENT_MASK;
/*添加键盘监听事件,当点击键盘上的方向键右键时浏览下一张图片,击左箭头浏览上一张,当按下上箭头时对当前图片进行放大操作*当按下下箭头时,对当前浏览的图片进行缩小操作*同时添加鼠标滚轮监听事件,也对当前图片进行缩放操作


**/
imgjp.addMouseWheelListener(newMouseWheelListener({publicvoidmouseWheelMoved(MouseWheelEvente{if(e.getWheelRotation(<0{//如果鼠标滚轮向上滚动,则放大图片
};
}



}

}else{//否则缩小图片}



publicvoidfindImage(Filedir{





File[]files=dir.listFiles(;//得到当前路径下的所有文件和文件夹for(inti=0;i}
}
//画图的算法有点问题????
staticclassImgsPanelextendsJPanel{privatestaticfinallongserialVersionUID=1L;
publicvoidpaintComponent(Graphicsg{super.paintComponent(g;Graphics2DG2=(Graphics2Dg;AffineTransformTrans=newAffineTransform(;
PWidth=img0.getWidth(null;PHeight=img0.getHeight(null;


Str=newString[files.length];
Str[i]=files[i].getAbsolutePath(;//将路径和文件名存入字符串数组//使用链表替代数组

if(Str[i].endsWith(".jpg"||Str[i].endsWith(".gif"||Str[i].endsWith(".png"==true{list.add(index,(newImageIcon(Str[i].getImage(;index++;}
if(PWidth<=SWidth&&PHeight<=SHeight{xCoor=(SWidth-PWidth/2;yCoor=(SHeight-PHeight/2;
PWidth0=PWidth;PHeight0=PHeight;
Trans.scale(xCoor0,yCoor0;//对图片的缩放操作//G2.setTransform(Trans;



}
if(PWidth>SWidth||PHeight>SHeight{
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;
}

staticclassTimimplementsActionListener{
publicvoidactionPerformed(ActionEvente{}
//看来变量最好不要用相同的变量名img0=(Image(list.get(index0;index0++;
if(index0==list.size({
index0=0;
img0=(Image(list.get(index0;

index0++;imgjp.repaint(;}
imgjp.repaint(;
}
staticclassShortcutKeyListenerimplementsAWTEventListener{publicvoideventDispatched(AWTEvente{

if(e.getClass(==KeyEvent.class{

//被处理的事件是键盘事件.KeyEventkeyEvent=(KeyEvente;
if(keyEvent.getID(==KeyEvent.KEY_PRESSED{keyPressed(keyEvent;
}elseif(keyEvent.getID(==KeyEvent.KEY_RELEASED{keyReleased(keyEvent;}}



}
/*
*当只有一张图片是抛出异常,不能使用左右方向键,待解决*/
privatevoidkeyPressed(KeyEvente{switch(e.getKeyCode({
caseKeyEvent.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;caseKeyEvent.VK_LEFT:if(list.size(!=1{
if(index0>0{img0=(Image(list.get(index0;now=index0;index0--;imgjp.repaint(;}
if(index0<0{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;caseKeyEvent.VK_ESCAPE:isFull=false;frame0=newJFrame(;

imgjp=newImgsPanel(;
imgjp.setBackground(newColor(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;
break;}
if((e.isControlDown(==true&&(e.getKeyCode(==KeyEvent.VK_UP{isFull=true;


frame0=newJFrame(;imgjp=newImgsPanel(;
imgjp.setBackground(newColor(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;}

}
privatevoidkeyReleased(KeyEventevent{}}
publicstaticvoidmain(String[]args{newPicsViewer(;

}}




免费下载 Word文档免费下载: java照片查看器源代码

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服