电子相册部分代码.docx
- 文档编号:7096529
- 上传时间:2023-01-17
- 格式:DOCX
- 页数:26
- 大小:24.45KB
电子相册部分代码.docx
《电子相册部分代码.docx》由会员分享,可在线阅读,更多相关《电子相册部分代码.docx(26页珍藏版)》请在冰豆网上搜索。
电子相册部分代码
菜单代码
packagedzxc;
importjavax.swing.*;
importjavax.swing.tree.DefaultMutableTreeNode;
importjavax.swing.tree.TreeNode;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.InputStream;
importjava.util.ArrayList;
//创建一个顶层框架类
//WIDTH参数是指框架的宽度
//HEIGH参数是指框架的高度
//setTitle用来设置框架左上角的标题
//setSize用来设置框架的大小
//通过ToolKit类中的方法,将顶层框架放置到屏幕中央
//通过构造菜单条类对像menubar1,菜单对象menu1,menu2,menu3,menu4及菜单项对象来构造一个菜单
//创建一个容器类对像p并向将菜单对象添加其中
//将p添加到顶层框架
publicclasscaidan{
staticfinalintWIDTH=1024;
staticfinalintHEIGHT=819;
privatestaticfinalToolkitSwingResourceManager=null;
DefaultMutableTreeNodeselectNode;
JScrollPanep1,p2;
JPaneljp=newJPanel();
JLabeljpg,l1;
Filedangqian_File;
JSplitPaneadmin;
JPaneladminJSPJpanel,ppp;
JLabeljl;
ArrayListlist;
doubleradius;//旋转角度
privateJFileChooserchooser;
JFileChooserfileChooser=newJFileChooser();
privateJLabellabel;
privateintcilck;
privateComponentt;
privateComponentoripicbtn;
booleanhasPic,isangled;
staticintindex,index2;
staticintclicktimesofbigbutton;
staticdoubleflag2=1.0;
staticbooleanflag3=false;
staticbooleanflag4=false;
staticbooleanhuanFlag;
staticStringcurrentFilePath;
staticFilecurrentDirectory;
publiccaidan()
{
JFramejf=newJFrame();
JLabeltitle=newJLabel("电子相册登录口");
title.setFont(newFont("隶书",Font.BOLD,25));
title.setForeground(newColor(250,180,150));
ImageIconimg=newImageIcon("1.jpg");//背景图片
JLabelimgLabel=newJLabel(newImageIcon("1.jpg"));
//将背景图放在标签里。
jf.getLayeredPane().add(imgLabel,newInteger(Integer.MIN_VALUE));
//注意这里是关键,将背景标签添加到jFram的//LayeredPane面板里。
imgLabel.setBounds(0,0,jf.getWidth(),jf.getHeight());//设置背景标签的位置
imgLabel.setBounds(0,0,img.getIconWidth(),img.getIconHeight());//设置背景标签的位置
Containercp=jf.getContentPane();
cp.setLayout(null);//这里选择绝对布局管理器,对于边界布局管理器,放入控件后,无法显示背景图片;因为将整个面板都填充满了;
((JPanel)cp).setOpaque(false);
jf.setSize(WIDTH,HEIGHT);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setTitle("电子相册浏览器");
Toolkitkit=Toolkit.getDefaultToolkit();
DimensionscreenSize=kit.getScreenSize();
intwidth=screenSize.width;
intheight=screenSize.height;
intx=(width-WIDTH)/2;
inty=(height-HEIGHT)/2;
jf.setLocation(x,y);
chooser=newJFileChooser();
JMenuBarmenubar1=newJMenuBar();
jf.setJMenuBar(menubar1);
JMenumenu1=newJMenu("文件");
menubar1.add(menu1);
JMenumenu2=newJMenu("编辑");
menubar1.add(menu2);
JMenumenu3=newJMenu("查看");
menubar1.add(menu3);
JMenumenu4=newJMenu("帮助");
menubar1.add(menu4);
JMenuItemitem1=newJMenuItem("打开");
menu1.add(item1);
item1.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent)
{
intresult=chooser.showOpenDialog(null);
if(result==JFileChooser.APPROVE_OPTION)
{
Stringname=chooser.getSelectedFile().getPath();
Fileff=newFile(name);
newWindow(ff.getPath());
}
}
});
JMenuItemitem2=newJMenuItem("保存");
menu1.add(item2);
JMenuItemitem3=newJMenuItem("打印");
menu1.add(item3);
JMenuItemitem4=newJMenuItem("退出");
menu1.add(item4);
item4.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventevent)
{
System.exit(0);
}
});
JMenuItemitem5=newJMenuItem("删除");
menu2.add(item5);
JMenuItemitem6=newJMenuItem("复制");
menu2.add(item6);
JMenuItemitem7=newJMenuItem("改名");
menu2.add(item7);
JMenuItemitem8=newJMenuItem("幻灯片");
menu3.add(item8);
item8.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventevent)
{
}
});
JMenuItemitem9=newJMenuItem("系统信息");
menu4.add(item9);
item9.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEventevent)
{
JOptionPane.showMessageDialog(null,"这个浏览器jpg,jpeg,gif和png图片"+"\n"
+"可以实现基本的看图功能,分别有:
"+"\n"
+"上一张,下一张,放大,缩小,删除"+"\n"
+"复制,移动,图片属性,幻灯片"+"\n"
+"重命名和批量重命名");
}
});
jf.show();
}
privatevoidreadTree(DefaultMutableTreeNodenode){
jp.removeAll();
jp.setVisible(false);
jp.setVisible(true);
TreeNode[]T=node.getPath();//获得路径存于数组
Stringdqpath="";
for(inti=0;i dqpath+=T[i].toString()+"\\";//得到文件夹的当前路径 } Filef=newFile(dqpath.substring(4));//创建当前路径的文件 if(f.isDirectory()){//如果是文件目录 String[]fileNames=f.list();//获得该目录下的子文件的名字,存于数组filename中 for(inti=0;i Stringfilename=fileNames[i]; finalFileff=newFile(f,fileNames[i]); if(ff.isDirectory()||accept(filename)){//再对每一个子文件进行判断, if(ff.isDirectory())//如果是目录, {node.add(newDefaultMutableTreeNode(fileNames[i]));//就添加为树的节点 ImageIconfile=newImageIcon("file.jpg"); Stringnewname; if(filename.length()>20) newname=filename.substring(0,20); else newname=filename; JLabella2=newJLabel(newname); la2.setToolTipText(filename);//显示文件夹名称 la2.setPreferredSize(newDimension(150,70)); //la2.setHorizontalTextPosition(JLabel.HORIZONTAL); la2.setIcon(file); la2.addMouseListener(newMouseAdapter(){//添加鼠标监听器 publicvoidmouseClicked(MouseEvente){ if(e.getClickCount()>=2) readfile(ff); } }); jp.add(la2); jp.setVisible(false); jp.setVisible(true); } else{//显示缩略图于右边的面板里 ImageIconim=newImageIcon(ff.getPath()); Imageimage=im.getImage().getScaledInstance(80,80, 0);//此方法只能用于Image类,设定大小获得缩略图 im.setImage(image);//设置im的图像 jl=newJLabel(im); ImageIconimg=newImageIcon(ff.getPath()); img.setImage(img.getImage()); Stringxx="名称: "+ff.getName()+"\n大小: "+ff.length()/1024+"KB"; jl.setToolTipText(xx);//怎么换不了行的? ? jl.setIcon(im); jl.setLayout(newFlowLayout(FlowLayout.LEFT,14,2)); //jl.setPreferredSize(newDimension(150,70)); jp.add(jl); jp.setVisible(false); jp.setVisible(true); jl.addMouseListener(newMouseListener(){ publicvoidmouseClicked(MouseEvente){ if(e.getClickCount()>=2)//当点击数大于2时候,进入功能界面 { newWindow(ff.getPath());//调用Window函数 jp.setVisible(false); jp.setVisible(true); } } SmallWindowsmall;//构造一个实例small publicvoidmouseEntered(MouseEvente){ intx=e.getXOnScreen();//获取鼠标的坐标 inty=e.getYOnScreen(); try{ Thread.sleep(900);//设定窗口弹出时间 }catch(InterruptedExceptionie){ }catch(Exceptionex){} small=newSmallWindow(x,y,ff.getPath()); } publicvoidmouseExited(MouseEvente){ small.setVisible(false); } publicvoidmousePressed(MouseEventarg0){} publicvoidmouseReleased(MouseEventarg0){} }); } } } } jp.doLayout();//必须有。 。 不然显示不了图片 } privatevoidreadfile(Filef){ //此函数用于在右边面板里添加文件夹,实现打开功能,采用了递归的方法 currentDirectory=f; jp.removeAll(); String[]fileNames=f.list();//获得该目录下的子文件的名字,存于数组filename中 for(inti=0;i Stringfilename=fileNames[i]; finalFileff=newFile(f,fileNames[i]); if(ff.isDirectory()||accept(filename)){//再对每一个子文件进行判断, if(ff.isDirectory())//如果是目录, { ImageIconfile=newImageIcon("file.jpg"); Stringnewname; if(filename.length()>20) newname=filename.substring(0,20); else newname=filename; JLabella2=newJLabel(newname); la2.setToolTipText(filename);//显示文件夹名称 la2.setPreferredSize(newDimension(150,70)); //la2.setHorizontalTextPosition(JLabel.HORIZONTAL); la2.setIcon(file); la2.addMouseListener(newMouseAdapter(){//添加鼠标监听器 publicvoidmouseClicked(MouseEvente){ if(e.getClickCount()>=2) readfile(ff); }}); la2.setSize(150,150); la2.setVisible(true); jp.add(la2); jp.setVisible(false); jp.setVisible(true); } else{//显示缩略图于右边的面板里 ImageIconim=newImageIcon(ff.getPath()); Imageimage=im.getImage().getScaledInstance(80,80, 0);//此方法只能用于Image类,设定大小获得缩略图 im.setImage(image);//设置im的图像 jl=newJLabel(im); ImageIconimg=newImageIcon(ff.getPath()); img.setImage(img.getImage()); Stringxx="名称: "+ff.getName()+"\n大小: "+ff.length()/1024+"KB"; jl.setToolTipText(xx);//怎么换不了行的? ? jl.setIcon(im); jl.setLayout(newFlowLayout(FlowLayout.LEFT,14,2)); //jl.setPreferredSize(newDimension(150,70)); jp.add(jl); jp.setVisible(false); jp.setVisible(true); jl.addMouseListener(newMouseListener(){ publicvoidmouseClicked(MouseEvente){ if(e.getClickCount()>=2)//当点击数大于2时候,进入功能界面 { newWindow(ff.getPath());//调用Window函数 jp.setVisible(false); jp.setVisible(true); } } SmallWindowsmall;//构造一个实例small publicvoidmouseEntered(MouseEvente){ intx=e.getXOnScreen();//获取鼠标的坐标 inty=e.getYOnScreen(); try{ Thread.sleep(900);//设定窗口弹出时间 }catch(InterruptedExceptionie){ }catch(Exceptionex){} small=newSmallWindow(x,y,ff.getPath()); } publicvoidmouseExited(MouseEvente){ small.setVisible(false); } publicvoidmousePressed(MouseEventarg0){} publicvoidmouseReleased(MouseEventarg0){} }); } } }jp.doLayout();//必须有。 。 不然显示不了图片 } // privatebooleanaccept(StringfileName){ booleanflag=false; if(fileName.toLowerCase().endsWith(".jpg")){ flag=true; }elseif(fileName.toLowerCase().endsWith(".jpeg")){ flag=true; }elseif(fileName.toLowerCase().endsWith(".gif")){ flag=true; } returnflag; } classSmallWindowextendsJFrame{ publicSmallWindow(intx,inty,Stringpath){ ImageIconimage=newImageIcon(path); intwidth=(int)((int)(image.getIconWidth())*0.4); intheight=(int)((int)(image.getIconHeight())*0.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子相册 部分 代码