⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frameofpicviewer.java

📁 Java实例入门
💻 JAVA
字号:
package picviewer;import java.io.*;import java.awt.*;import javax.swing.*;import javax.swing.tree.*;import java.awt.event.*;import javax.swing.event.*;import java.util.*;/** * Title:        图片浏览器 * Description:  这是一个用于浏览磁盘上图片文件的程序 * Copyright:    Copyright (c) 2001 * Company: * @author java_user * @version 1.0 */public class FrameOfPicViewer extends JFrame {  BorderLayout borderLayout1 = new BorderLayout();  JLabel StatusBar = new JLabel();  JPanel mainPanel = new JPanel();  GridLayout gridLayout1 = new GridLayout();  JPanel leftPanel = new JPanel();  JPanel rightPanel = new JPanel();  BorderLayout borderLayout2 = new BorderLayout();  JComboBox cmbDrivers = new JComboBox();  JLabel jLabel1 = new JLabel();  JScrollPane jScrollPane1 = new JScrollPane();  JTree treFileList;  TreeNode root;  DefaultTreeModel model;  String selDriver="";  String selFilePath="";  boolean runState=false;  boolean selState=false;  public FrameOfPicViewer() {    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }    runState=true;  }  public static void main(String[] args) {    try {         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());    }    catch(Exception e) {    }    FrameOfPicViewer frameOfPicViewer = new FrameOfPicViewer();  }  private void jbInit() throws Exception {    this.getContentPane().setLayout(borderLayout1);    StatusBar.setText("   ");    mainPanel.setLayout(gridLayout1);    gridLayout1.setColumns(2);    leftPanel.setLayout(borderLayout2);    jLabel1.setText("请选择图片文件");    this.setTitle("图片浏览器");    this.addWindowListener(new java.awt.event.WindowAdapter() {      public void windowClosing(WindowEvent e) {        this_windowClosing(e);      }    });    cmbDrivers.addItemListener(new java.awt.event.ItemListener() {      public void itemStateChanged(ItemEvent e) {        cmbDrivers_itemStateChanged(e);      }    });    this.getContentPane().add(StatusBar, BorderLayout.SOUTH);    this.getContentPane().add(mainPanel, BorderLayout.CENTER);    mainPanel.add(leftPanel, null);    mainPanel.add(rightPanel, null);    leftPanel.add(cmbDrivers,  BorderLayout.NORTH);    leftPanel.add(jScrollPane1, BorderLayout.CENTER);    this.getContentPane().add(jLabel1, BorderLayout.NORTH);    loadDrivers(cmbDrivers);    selDriver=cmbDrivers.getSelectedItem().toString().trim();    root=loadFilePaths(selDriver);    model=new DefaultTreeModel(root);    treFileList=new JTree(model);    jScrollPane1.getViewport().add(treFileList, null);    DefaultTreeCellRenderer render=new DefaultTreeCellRenderer();    render.setClosedIcon(new ImageIcon("images/closed.gif"));    render.setOpenIcon(new ImageIcon("images/open.gif"));    render.setLeafIcon(new ImageIcon("images/leaf.gif"));    treFileList.setCellRenderer(render);   // treFileList.setEditable(true);    int selModel=TreeSelectionModel.SINGLE_TREE_SELECTION ;    treFileList.getSelectionModel().setSelectionMode(selModel);    treFileList.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {      public void valueChanged(TreeSelectionEvent e) {        treFileList_valueChanged(e);      }    });    setSize(600,300);    selState=true;    show();  }  void this_windowClosing(WindowEvent e) {    System.exit(0);  }  private void loadDrivers(JComboBox cmbBox){    //建立当前路径的File对象    File currentPath=new File(".");    File[] drivers=currentPath.listRoots();    //得到计算机中所有驱动器的名称    for(int i=0;i<= drivers.length -1;i++){       cmbBox.addItem(drivers[i].toString());    }    //缺省值设置为当前路径的驱动器    String path=currentPath.getAbsolutePath();    for(int i=0;i<= drivers.length -1;i++){      if(path.indexOf(cmbBox.getItemAt(i).toString().trim() )>=0) {          cmbBox.setSelectedItem(cmbBox.getItemAt(i));         break;      }    }  }  //利用递归函数得到选择驱动器中所有的图片文件  private TreeNode  loadFilePaths(String rootPath){    StatusBar.setText("  ");    File path=new File(rootPath);    DefaultMutableTreeNode root=new DefaultMutableTreeNode(path.getName().trim());    DefaultTreeModel model=new DefaultTreeModel(root);    File[] childsOfPath=path.listFiles();    for(int i=0;i<=childsOfPath.length-1;i++){        String name=childsOfPath[i].getName().trim();       if(childsOfPath[i].isDirectory() ){          DefaultMutableTreeNode childRoot;          childRoot=(DefaultMutableTreeNode)loadFilePaths(childsOfPath[i].getAbsolutePath());         if(childRoot.getChildCount() >0)            root.add(childRoot);        }       else {          int  c=name.lastIndexOf(".")  ;           String fileType=name.substring(c+1).toUpperCase();          if(fileType.equals("JPG") ||fileType.equals("GIF") ){               DefaultMutableTreeNode childRoot=new DefaultMutableTreeNode(name);               root.add(childRoot);           }        }    }    return root;  }  void cmbDrivers_itemStateChanged(ItemEvent e) {     selState=false;     String strDriver=cmbDrivers.getSelectedItem().toString().trim();     if(runState&& !strDriver.equals(selDriver))  {          DefaultMutableTreeNode newRoot=(DefaultMutableTreeNode)loadFilePaths(strDriver);          Enumeration childs=((DefaultMutableTreeNode)root).children();         while(childs.hasMoreElements() ){             DefaultMutableTreeNode node= (DefaultMutableTreeNode)childs.nextElement();             model.removeNodeFromParent(node  );          }         for(int i=1;i<=newRoot.getChildCount() ;i++){             model.insertNodeInto((DefaultMutableTreeNode)newRoot.getChildAt(i-1),(DefaultMutableTreeNode)root,0 );         }          model.reload(root);          selDriver=strDriver;     }     selState=true;  }  void treFileList_valueChanged(TreeSelectionEvent e) {     if(selState){        TreePath path=treFileList.getSelectionPath();        DefaultMutableTreeNode node=(DefaultMutableTreeNode)path.getLastPathComponent();       if(node.isLeaf() ){            String selFile="";            String strPath=path.toString();            strPath=strPath.replace('[',' ');            strPath=strPath.replace(']',' ').trim();           for(int i=1;i<=path.getPathCount()-1;i++ ){               int c=strPath.lastIndexOf(",") ;                selFile=strPath.substring(c+1).trim()+"\\"+selFile;                strPath=strPath.substring(0,c);            }            selFile=selDriver+selFile.substring(0,selFile.length()-1).trim();            loadPic(selFile);       }   }  }  void loadPic(String picName){     ImageIcon img=new ImageIcon(picName);     int pWidth=rightPanel.getWidth();     int pHeight=rightPanel.getHeight();     int mWidth=img.getIconWidth() ;     int mHeight=img.getIconHeight() ;     int x,y;     int width,height;     if((mWidth<=pWidth)&&(mHeight<=pHeight)){        x=(pWidth-mWidth)/2;    y=(pHeight-mHeight)/2;        width=mWidth;   height=mHeight;     }else {        width=pWidth;   height=pHeight;       float widthScale=(float)pWidth/(float)mWidth;       float heightScale=(float)pHeight/(float)mHeight;       if(widthScale<heightScale)           height=(int)(mHeight*widthScale);       else           width=(int)(mWidth*heightScale);        x=(pWidth-width)/2;        y=(pHeight-height)/2;     }     StatusBar.setText("文件:"+picName+"    大小:"+mWidth+"X"+mHeight);     rightPanel.getGraphics().clearRect(0,0,pWidth,pHeight);     rightPanel.getGraphics().drawImage(img.getImage(),x,y,width,height,this);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -