電子相冊java源碼
《電子相冊java源碼》由會員分享,可在線閱讀,更多相關(guān)《電子相冊java源碼(22頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 import java.awt.*; import java.awt.FlowLayout; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.ArrayList; import javax.imageio.ImageIO; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import javax.swing.tree.DefaultMut
2、ableTreeNode; public class ImageShow00{ public static void main(String[] arge){ try {//美化界面像windows UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e){} JFrame frame = new ImageShowFrame (
3、); frame.setVisible(true); //frame.setLayout(null); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class ImageShowFrame extends JFrame{ DefaultMutableTreeNode selectNode; JScrollPane p1,p2; JPanel jp = new JPanel(); JLabel jpg,l1; File dangqian_File; JSp
4、litPane admin; JPanel adminJSPJpanel,ppp; JLabel jl; ArrayList list; private JFileChooser chooser; JFileChooser fileChooser = new JFileChooser(); private JLabel label; /*按鈕圖標(biāo)*/ private ImageIcon shang= new ImageIcon("image/shang.jpg"); private ImageIc
5、on open= new ImageIcon("image/open.png"); private ImageIcon help= new ImageIcon("image/help.jpg"); private ImageIcon up= new ImageIcon("image/up.png"); private ImageIcon next= new ImageIcon("image/next.png"); private ImageIcon move= new ImageIcon("image/move.png"); private I
6、mageIcon de= new ImageIcon("image/de.png"); private ImageIcon cope= new ImageIcon("image/cope.jpg"); private ImageIcon sx= new ImageIcon("image/sx.png"); private ImageIcon change= new ImageIcon("image/change.jpg"); private ImageIcon allchange= new ImageIcon("image/allchange.jpg")
7、; private ImageIcon huan= new ImageIcon("image/play.png"); private ImageIcon biger= new ImageIcon("image/big.png"); private ImageIcon smaller= new ImageIcon("image/small.png"); static int index,index2; static int clicktimesofbigbutton; static double flag2 = 1.0;
8、static boolean flag3 = false; static boolean flag4 = false; static boolean huanFlag; static String currentFilePath; static File currentDirectory; public ImageShowFrame(){ Image logo = null; final String msn= "這個系統(tǒng)用于瀏覽jpg,jpeg,gif和png圖片"+"\n"
9、 +"可以實(shí)現(xiàn)基本的看圖功能,分別有:"+"\n" +"上一張,下一張,放大,縮小,刪除"+"\n" +"復(fù)制,移動,圖片屬性,幻燈片"+"\n" +"重命名和批量重命名"; try { //美化左上角圖標(biāo) File sourceLogo = new File("image/
10、win.png"); logo = ImageIO.read(sourceLogo); } catch(IOException e) { } setIconImage(logo); setTitle("JAVA自制圖像瀏覽器--09版"); setSize(1000,650); label=new JLabel(); label.setHorizontalAlignment(JLabel.CENTER);//水平設(shè)置 la
11、bel.setVerticalAlignment(JLabel.CENTER);//垂直設(shè)置 add(label); chooser=new JFileChooser();//實(shí)現(xiàn)打開功能 JMenuBar menuBar = new JMenuBar();//設(shè)置菜單欄 setJMenuBar(menuBar); JMenu menu0=new JMenu("文件(F)"); menuBar.add(menu0); JMenu menu1=new JMenu("編輯"
12、); menuBar.add(menu1); JMenu menu2=new JMenu("視圖"); menuBar.add(menu2); JMenu menu3=new JMenu("創(chuàng)建"); menuBar.add(menu3); JMenu menu4=new JMenu("幫助"); menuBar.add(menu4); JMenuItem openItem=new JMenuItem("打開(Open)"
13、); menu0.add(openItem); openItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { int result=chooser.showOpenDialog(null); if(
14、result==JFileChooser.APPROVE_OPTION) { String name=chooser.getSelectedFile().getPath(); File ff = new File(name); new Window(ff.getPath());
15、 } } }); JMenu newItem = new JMenu("新建"); menu0.add(newItem); JMenuItem snewItem = new JMenuItem("新建"); newItem.add(snewItem); JMenuItem exitItem=new JMenuItem("退出(Exit)"); men
16、u0.add(exitItem); exitItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { System.exit(0);} }); JMenuItem saveItem=new JMenuItem("保存"); menu1.add(saveItem); JMenuItem deleteI
17、tem=new JMenuItem("刪除"); menu1.add(deleteItem); JMenuItem copyItem=new JMenuItem("復(fù)制"); menu1.add(copyItem); JMenuItem changeItem=new JMenuItem("改名"); menu1.add(changeItem); JMenuItem huanItem=new JMenuItem("幻燈片"); menu2.add(huanI
18、tem); JMenuItem helpItem=new JMenuItem("系統(tǒng)信息"); menu4.add(helpItem); helpItem.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { JOptionPane.showM
19、essageDialog(null, msn); }}); JToolBar tb = new JToolBar(); JButton Open = new JButton("打開",open); Open.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event)
20、 { int result=chooser.showOpenDialog(null); if(result==JFileChooser.APPROVE_OPTION) { String name=chooser.getSelectedFile().getPath();
21、 File ff = new File(name); new Window(ff.getPath()); } } }); tb.add(Open); JButton Shang = new JButton("向上",shang); Shang.addA
22、ctionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { currentDirectory = currentDirectory.getParentFile(); readfile(currentDirectory); jp.setVisible(false); jp.setVisible(true);
23、 } }); tb.add(Shang); JButton Help = new JButton("幫助",help); Help.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent event) { JOptionPane.showMessageDialog(
24、null, msn); }}); tb.add(Help); p1 = new JScrollPane();//添加 滾動條里面實(shí)現(xiàn)樹的功能 DefaultMutableTreeNode root = new DefaultMutableTreeNode("我的電腦"); File[] roots = File.listRoots();//將樹的節(jié)點(diǎn)存放在文件數(shù)組roots中 for (int i = 0; i < roots.length; i++) { Defa
25、ultMutableTreeNode c = new DefaultMutableTreeNode(roots[i] .getPath());//把系統(tǒng)的磁盤加到root root.add(c); } JTree t = new JTree(root); t.addMouseListener(new MouseListener() {//添加鼠標(biāo)監(jiān)聽器 public void mouseClicked(MouseEvent e) { if (e.getClickCount() >=1) { JTre
26、e clickJTree = (JTree) e.getComponent();//獲取樹的組件 TreePath selectTreePath = clickJTree.getAnchorSelectionPath();//返回選擇的路徑 selectNode = (DefaultMutableTreeNode) selectTreePath .getLastPathComponent();//返回路徑的最后組件 readTree(selectNode);//調(diào)用readlast方法 }
27、 } public void mouseEntered(MouseEvent arg0) {} public void mouseExited(MouseEvent arg0) {} public void mousePressed(MouseEvent arg0) {} public void mouseReleased(MouseEvent arg0) {} }); p1= new JScrollPane(t); p2= new JScrollPane(jp); p2
28、.setViewportView(jp); p2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); //讓滾動條適時間地出現(xiàn)。。不過好像沒有用-.-!,豎的滾動條一直不出現(xiàn) setLayout(new BorderLayout()); jp.setBackground(Color.white); jp.setPreferredSize(new Dimension(500, 2400));//加后并設(shè)置豎直長一點(diǎn)。。豎滾動條才出
29、現(xiàn)! jp.setVisible(false); jp.setVisible(true); admin=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,p1,p2);//分割面板 admin.setDividerLocation(200);//分割面板后設(shè)置了樹滾動條的寬 jp.setLayout(new FlowLayout(FlowLayout.LEFT,14,2)); jp.doLayout(); add(tb,BorderLayout.NORTH);
30、 add(admin,BorderLayout.CENTER); } private void readTree(DefaultMutableTreeNode node) { jp.removeAll(); jp.setVisible(false); jp.setVisible(true); TreeNode[] T = node.getPath();//獲得路徑存于數(shù)組 String dqpath =""; for (int i = 0; i < T.length; i++) {
31、 dqpath += T[i].toString() + "\\";//得到文件夾的當(dāng)前路徑 } File f = new File(dqpath.substring(4));//創(chuàng)建當(dāng)前路徑的文件 if (f.isDirectory()) {//如果是文件目錄 String[] fileNames = f.list();//獲得該目錄下的子文件的名字,存于數(shù)組filename中 for (int i = 0; i < fileNames.length; i++) { String filename = fileNames[i]; fina
32、l File ff = new File(f, fileNames[i]); if (ff.isDirectory()|| accept(filename)) {//再對每一個子文件進(jìn)行判斷, if (ff.isDirectory())//如果是目錄, { node.add(new DefaultMutableTreeNode(fileNames[i]));//就添加為樹的節(jié)點(diǎn) ImageIcon
33、 file = new ImageIcon("file.jpg"); String newname; if (filename.length() > 20) newname = filename.substring(0, 20); else newname = filename; JLabel la2 = new JLabel(newname); la2.setToolTipText(
34、filename);//顯示文件夾名稱 la2.setPreferredSize(new Dimension(150,70)); // la2.setHorizontalTextPosition(JLabel.HORIZONTAL); la2.setIcon(file); la2.addMouseListener(new MouseAdapter() {//添加鼠標(biāo)監(jiān)聽器 public void mouseC
35、licked(MouseEvent e) { if(e.getClickCount() >=2) readfile(ff); } }); jp.add(la2); jp.setVisible(false); jp.setVisible(true);
36、 } else {//顯示縮略圖于右邊的面板里 ImageIcon im = new ImageIcon(ff.getPath()); Image image = im.getImage().getScaledInstance(80, 80, 0);//此方法只能用于Image類,設(shè)定大小獲得縮略圖 im.setImage(image);//設(shè)置im的圖像
37、 jl = new JLabel(im); ImageIcon img = new ImageIcon(ff.getPath()); img.setImage(img.getImage()); String xx ="名稱:"+ ff.getName()+"\n 大?。?+ff.length()/1024+"KB";
38、 jl.setToolTipText(xx);//怎么換不了行的?? jl.setIcon(im); jl.setLayout(new FlowLayout(FlowLayout.LEFT,14,2)); // jl.setPreferredSize(new Dimension(150,70)); jp.add(jl); jp.setVisible(false);
39、 jp.setVisible(true); jl.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if(e.getClickCount() >=2)//當(dāng)點(diǎn)擊數(shù)大于2時候,進(jìn)入功能界面 {
40、 new Window(ff.getPath()); //調(diào)用Window函數(shù) jp.setVisible(false); jp.setVisible(true); } } SmallWindow small;//構(gòu)造一個實(shí)例small
41、 public void mouseEntered(MouseEvent e) { int x = e.getXOnScreen();//獲取鼠標(biāo)的坐標(biāo) int y = e.getYOnScreen(); try{ Thread.sleep(900);//設(shè)定窗口彈出時間
42、 } catch (InterruptedException ie){ } catch(Exception ex) {} small= new SmallWindow(x, y, ff.getPath()); } public void mouseExited(MouseEvent e) {
43、 small.setVisible(false); } public void mousePressed(MouseEvent arg0) {} public void mouseReleased(MouseEvent arg0) {} }); } } } } jp.doLayout();//必須有。。不然顯示不了圖片
44、 } private void readfile(File f) { //此函數(shù)用于在右邊面板里添加文件夾,實(shí)現(xiàn)打開功能,采用了遞歸的方法 currentDirectory =f; jp.removeAll(); String[] fileNames = f.list();//獲得該目錄下的子文件的名字,存于數(shù)組filename中 for (int i = 0; i < fileNames.length; i++) { String filename = fileNames[i];
45、 final File ff = new File(f, fileNames[i]); if (ff.isDirectory()|| accept(filename)) {//再對每一個子文件進(jìn)行判斷, if (ff.isDirectory())//如果是目錄, { ImageIcon file = new ImageIcon("file.jpg"); String newname;
46、 if (filename.length() > 20) newname = filename.substring(0, 20); else newname = filename; JLabel la2 = new JLabel(newname); la2.setToolTipText(filename);//顯示文件夾名稱 la2.setPreferredSize(new Dimensi
47、on(150,70)); // la2.setHorizontalTextPosition(JLabel.HORIZONTAL); la2.setIcon(file); la2.addMouseListener(new MouseAdapter() {//添加鼠標(biāo)監(jiān)聽器 public void mouseClicked(MouseEvent e) { if
48、(e.getClickCount() >=2) readfile(ff); } }); la2.setSize(150, 150); la2.setVisible(true); jp.add(la2); jp.setVisible(false);
49、 jp.setVisible(true); } else {//顯示縮略圖于右邊的面板里 ImageIcon im = new ImageIcon(ff.getPath()); Image image = im.getImage().getScaledInstance(80, 80, 0);//此方法只能用于Image類,設(shè)定大小獲得縮略圖 im.setImage(image);//設(shè)置im的圖像
50、 jl = new JLabel(im); ImageIcon img = new ImageIcon(ff.getPath()); img.setImage(img.getImage()); String xx ="名稱:"+ ff.getName()+"\n 大?。?+ff.length()/1024+"KB"; jl.s
51、etToolTipText(xx);//怎么換不了行的?? jl.setIcon(im); jl.setLayout(new FlowLayout(FlowLayout.LEFT,14,2)); // jl.setPreferredSize(new Dimension(150,70)); jp.add(jl); jp.setVisible(false); jp.setVi
52、sible(true); jl.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if(e.getClickCount() >=2)//當(dāng)點(diǎn)擊數(shù)大于2時候,進(jìn)入功能界面 { new Window(ff.getPath()); //調(diào)用Wi
53、ndow函數(shù) jp.setVisible(false); jp.setVisible(true); } } SmallWindow small;//構(gòu)造一個實(shí)例small public void mouseEntered(MouseEvent e) {
54、 int x = e.getXOnScreen();//獲取鼠標(biāo)的坐標(biāo) int y = e.getYOnScreen(); try{ Thread.sleep(900);//設(shè)定窗口彈出時間 } catch (InterruptedException ie){
55、 } catch(Exception ex) {} small= new SmallWindow(x, y, ff.getPath()); } public void mouseExited(MouseEvent e) { small.setVisible(false);
56、 } public void mousePressed(MouseEvent arg0) {} public void mouseReleased(MouseEvent arg0) {} }); } } } jp.doLayout();//必須有。。不然顯示不了圖片 } // private boolean accept(St
57、ring fileName) { boolean flag = false; if (fileName.toLowerCase().endsWith(".jpg")) { flag = true; } else if (fileName.toLowerCase().endsWith(".jpeg")) { flag = true; } else if (fileName.toLowerCase().endsWith(".gif")) { flag = true; } return flag; }
58、 class SmallWindow extends JFrame { public SmallWindow(int x, int y, String path) { ImageIcon image = new ImageIcon(path); int width = (int) ((int) (image.getIconWidth()) * 0.4); int height = (int) ((int) (image.getIconHeight()) * 0.4); int h=height;
59、 if(h<100)h= h+100; Image im = image.getImage().getScaledInstance(width, height, 0); image.setImage(im);//Image和ImageIcon。。花了很長時間 JLabel sl= new JLabel(image); sl.setBackground(Color.white); add(sl); setSize(width , h ); s
60、etTitle(new File(path).getName()); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();//獲得屏幕大小 Dimension frameSize = getSize(); if(x + frameSize.width > screenSize.width)//如果小窗口超出右邊屏幕,將窗口左移 x = x - frameSize.width - 50; if(y +
61、 frameSize.height >screenSize.height)//當(dāng)小窗口超出下面屏幕,窗口上移 y = y - frameSize.height - 20; setLocation(x + 30, y + 35);//小窗口的坐標(biāo) setUndecorated(true);//消除小窗口的邊框 setVisible(true); } } class Window extends JFrame{ int cilck = 1; public Wi
62、ndow(final String filepath) { currentFilePath = filepath; // flag =0; ImageIcon image = new ImageIcon(filepath); final Timer timer = new Timer(1500, new TimerListener()); Image logo = null;//美化左上角圖標(biāo) try { File sourceLo
63、go = new File("image/win2.png"); logo = ImageIO.read(sourceLogo); } catch(IOException e) { } setIconImage(logo); JFrame frame = new JFrame(); frame.setTitle("圖像功能管理器"); frame.setIconImage(logo); frame.setVisible(true);
64、 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();//獲得屏幕的大小 frame.setSize(950, 720); Dimension frameSize = frame.getSize();//讓窗口在中間彈出 frame.setLocation( (screenSize.width - frameSize.width) / 2,(screenSize.height - frameSize.height) / 2); l1
65、= new JLabel(image); ppp = new JPanel(); ppp.setLayout(new BorderLayout()); ppp.add(l1,BorderLayout.CENTER); ppp.setBackground(Color.white); l1.removeAll(); l1.doLayout(); JScrollPane pnew = new JScrollPane(ppp);//添加滾動條,當(dāng)圖片太大時可以查看
66、 JToolBar p3 = new JToolBar(); frame.add(p3,BorderLayout.NORTH); frame.add(pnew,BorderLayout.CENTER); /** * 上一張 */ JButton up_button=new JButton("上一張",up); up_button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { lastpicture(); } }); p3.add(up_button); /** * 下一張 */ JButton next_button=new JButton("下一張",next); next_button
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 市教育局冬季運(yùn)動會安全工作預(yù)案
- 2024年秋季《思想道德與法治》大作業(yè)及答案3套試卷
- 2024年教師年度考核表個人工作總結(jié)(可編輯)
- 2024年xx村兩委涉案資金退還保證書
- 2024年憲法宣傳周活動總結(jié)+在機(jī)關(guān)“弘揚(yáng)憲法精神推動發(fā)改工作高質(zhì)量發(fā)展”專題宣講報告會上的講話
- 2024年XX村合作社年報總結(jié)
- 2024-2025年秋季第一學(xué)期初中歷史上冊教研組工作總結(jié)
- 2024年小學(xué)高級教師年終工作總結(jié)匯報
- 2024-2025年秋季第一學(xué)期初中物理上冊教研組工作總結(jié)
- 2024年xx鎮(zhèn)交通年度總結(jié)
- 2024-2025年秋季第一學(xué)期小學(xué)語文教師工作總結(jié)
- 2024年XX村陳規(guī)陋習(xí)整治報告
- 2025年學(xué)校元旦迎新盛典活動策劃方案
- 2024年學(xué)校周邊安全隱患自查報告
- 2024年XX鎮(zhèn)農(nóng)村規(guī)劃管控述職報告