我的Java学习2

package com.resume.sky;

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.*;
import java.util.Enumeration;
import java.util.Properties;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.text.Document;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;

/**
 * 查询已下载的简历界面
 * @author qKF9319
 *
 */
public class MyResumePanel extends JPanel implements ActionListener,
  TreeSelectionListener {

 private String rootPath;

 private String selectPath = "";

 private Properties pro = new Properties();

 private File storeDir;

 private JPanel paraPanel;

 private JPanel jTreePanel;

 private JPanel operTreePanel;

 private JPanel viewPanel;

 private JTree resumeTree;

 private JButton changeDirButton;

 private JButton refreshButton;

 private JButton delButton;

 private JButton openTreeButton;

 private JPanel editPanel;

 private JButton saveButton;

 private JButton editButton;

 private JScrollPane jTreeScrollPane;

 private JEditorPane editorPane;

 private JScrollPane jViewScrollPane;

 private DefaultMutableTreeNode rootNode;

 private DefaultTreeModel jTreeModel;

 private TreeDataModel threadTDataModel;

 private JSplitPane spPane;

 private JPopupMenu jTreePopupMenu;

 private JMenuItem jTreeMenuItem1;

 private JMenuItem jTreeMenuItem2;

 private JMenuItem jTreeMenuItem3;

 public MyResumePanel() {
  try {
   pro.load(new FileInputStream(new File(System
     .getProperty("user.dir")
     + "//img//log.properties")));//装载存储简历路径的属性文件
   rootPath = pro.getProperty("rootStorePath");
   storeDir = new File(rootPath);
   jbInit();
  } catch (Exception e) {
   JOptionPane.showMessageDialog(null, "加载存储路径出错!", "出错",
     JOptionPane.ERROR_MESSAGE);
  }
 }

 public void jbInit() {

  this.setLayout(new BorderLayout(4, 4));
  paraPanel = new JPanel();
  paraPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory
    .createEtchedBorder(), "参数设置"));
  changeDirButton = new JButton("更改简历库路径");
  refreshButton = new JButton("刷新");
  changeDirButton.addActionListener(this);
  refreshButton.addActionListener(this);
  paraPanel.add(changeDirButton);

  jTreePanel = new JPanel();
  jTreePanel.setLayout(new BorderLayout());
  jTreePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory
    .createEtchedBorder(), ""));
  operTreePanel = new JPanel();
  operTreePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory
    .createEtchedBorder(), ""));
  openTreeButton = new JButton("展开");
  delButton = new JButton("删除");
  openTreeButton.addActionListener(this);
  delButton.addActionListener(this);

  operTreePanel.add(openTreeButton);
  operTreePanel.add(delButton);
  operTreePanel.add(refreshButton);
  viewPanel = new JPanel();
  viewPanel.setLayout(new BorderLayout());

  rootNode = new DefaultMutableTreeNode("简历库");// 定义树结点

  jTreeModel = new DefaultTreeModel(rootNode);//定义树模型:添加根节点rootNode
  resumeTree = new JTree(jTreeModel);
  //设置Tree的选择模式为一次只能选择一个节点
  resumeTree.getSelectionModel().setSelectionMode(
    TreeSelectionModel.SINGLE_TREE_SELECTION);

  resumeTree.addTreeSelectionListener(this);
  resumeTree.addMouseListener(new MyResumePanel_jTreeModel_mouseAdapter(
    this));
  resumeTree.setAutoscrolls(true);

  //rootNode.getTreeSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);//设置单选模式
  jTreeScrollPane = new JScrollPane();
  jTreeScrollPane.getViewport().add(resumeTree, null);
  jTreePanel.add(operTreePanel, BorderLayout.NORTH);
  jTreePanel.add(jTreeScrollPane, BorderLayout.CENTER);

  editorPane = new JEditorPane();
  editorPane.setBorder(BorderFactory.createTitledBorder(BorderFactory
    .createEtchedBorder(), "简历信息"));
  editorPane.setEditable(false);

  jViewScrollPane = new JScrollPane(editorPane);
  //jViewScrollPane.setBounds(new Rectangle(0, 0, 500, 600));
  viewPanel.add(jViewScrollPane);

  saveButton = new JButton("保存简历");

  saveButton.setEnabled(false);

  editButton = new JButton("编辑简历");

  editButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    editButton.setEnabled(false);
    saveButton.setEnabled(true);
    editorPane.setEditable(true);
   }
  });

  saveButton.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    editButton.setEnabled(true);
    saveButton.setEnabled(false);
    editorPane.setEditable(false);
    try {

     File resumeFile = new File(selectPath);
     if (resumeFile.isFile()) {
      ParseTxtContent ptContent = new ParseTxtContent();
      ptContent.writeFromBuffer(editorPane.getText(),
        new FileOutputStream(resumeFile));//保存修改过的简历 

      JOptionPane.showMessageDialog(null, "保存成功!", "提示",
        JOptionPane.INFORMATION_MESSAGE);
     }

    } catch (Exception ex) {
     ex.printStackTrace();
     JOptionPane.showMessageDialog(null, "打开文件出错!", "出错",
       JOptionPane.ERROR_MESSAGE);
    }

   }
  });
  editPanel = new JPanel();

  editPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory
    .createEtchedBorder(), "修改简历"));

  editPanel.add(editButton);

  editPanel.add(saveButton);

  viewPanel.add(editPanel, BorderLayout.SOUTH);

  this.add(paraPanel, BorderLayout.NORTH);

  spPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, false, jTreePanel,
    viewPanel);
  spPane.setOneTouchExpandable(true);//设置JSplitPane是否可以展开或收起(如同文件总管一般),设为true表示打开此功能.
  spPane.setDividerSize(8);//设置分隔线宽度的大小,以pixel为计算单位。  
  this.add(spPane, BorderLayout.CENTER);

  jTreePopupMenu = new JPopupMenu();
  jTreeMenuItem1 = new JMenuItem("展开");
  jTreeMenuItem2 = new JMenuItem("删除");
  jTreeMenuItem3 = new JMenuItem("刷新");
  jTreeMenuItem1.addActionListener(this);
  jTreeMenuItem2.addActionListener(this);
  jTreeMenuItem3.addActionListener(this);
  jTreePopupMenu.add(jTreeMenuItem1);
  jTreePopupMenu.addSeparator();
  jTreePopupMenu.add(jTreeMenuItem2);
  jTreePopupMenu.addSeparator();
  jTreePopupMenu.add(jTreeMenuItem3);

  TreePath visiblePath = new TreePath(jTreeModel.getRoot());
  threadTDataModel = new TreeDataModel(rootPath, visiblePath); //获得路径;
  Thread t = new Thread(threadTDataModel);
  t.start();//树结构的初始化

 }

 public String getStoreRootPath() {
  return storeDir.getAbsolutePath();
 }

 public void actionPerformed(ActionEvent evt) {
  try {
   if (evt.getSource() == changeDirButton) {//更改简历库的根路径
    final JFrame frame = new JFrame();
    frame.setLayout(new BorderLayout(2, 2));
    frame.setTitle("更改简历库路径");
    frame.setBounds(240, 150, 550, 100);
    JPanel jInfoPanel = new JPanel();
    JLabel jMesg = new JLabel(
      "<html><p align=center><b>简历存放的根目录</b></p></html>",
      JLabel.CENTER);
    final JTextField inputPathField = new JTextField(rootPath);
    jMesg.setFont(new Font("宋体", Font.PLAIN, 12));

    jInfoPanel.add(jMesg);
    jInfoPanel.add(inputPathField);
    frame.add(jInfoPanel, BorderLayout.CENTER);

    JButton sureButton = new JButton("确 定");
    sureButton.addActionListener(new ActionListener() {

     public void actionPerformed(ActionEvent e) {
      String inputSPath = inputPathField.getText().trim();
      inputSPath = inputSPath.replace("'/'", "//");
      rootPath = inputSPath;

      storeDir = new File(inputSPath);
      if (!storeDir.exists())
       storeDir.mkdir();

      String pathContent = "rootStorePath=" + rootPath;

      try {
       File f = new File(System.getProperty("user.dir")
         + "//img//log.properties");
                           
       if(f.exists())
       {
        f.delete();
        f.createNewFile();
       }
       FileOutputStream out = new FileOutputStream(f);

       ParseTxtContent tempP=new ParseTxtContent();
       
       tempP.writeFromBuffer(pathContent, out);
       out.close();

       frame.dispose();
       JOptionPane.showMessageDialog(null, "创建成功!新的路径是:"
         + storeDir.getAbsolutePath(), "提示",
         JOptionPane.INFORMATION_MESSAGE);
      }

      catch (Exception ex) {
       JOptionPane.showMessageDialog(null, "保存存储路径出错!",
         "出错", JOptionPane.ERROR_MESSAGE);
      }

     }
    });
    JPanel jExitPanel = new JPanel();
    jExitPanel.add(sureButton);
    frame.add(jExitPanel, BorderLayout.SOUTH);
    frame.setVisible(true);
    frame.setResizable(false);

   } else {
    if (evt.getSource() == openTreeButton
      || evt.getSource() == jTreeMenuItem1)//展开树
    {
     if (resumeTree.getSelectionPath() != null) {
      viewNode((DefaultMutableTreeNode) resumeTree
        .getSelectionPath().getLastPathComponent());
     } else {
      JOptionPane.showMessageDialog(null,
        "请选择根目录下的一个文件或者文件夹!", "提示",
        JOptionPane.INFORMATION_MESSAGE);
     }
    } else {
     if (evt.getSource() == refreshButton
       || evt.getSource() == jTreeMenuItem3)//刷新树
     {
      delNode((DefaultMutableTreeNode) jTreeModel.getRoot());
      TreePath visiblePath = new TreePath(jTreeModel
        .getRoot());
      threadTDataModel = new TreeDataModel(rootPath,
        visiblePath); //获得路径;
      Thread t = new Thread(threadTDataModel);
      t.start();//树结构的初始化
     } else {
      if (evt.getSource() == delButton
        || evt.getSource() == jTreeMenuItem2)//删除树
      {
       Thread delThread = new Thread() {
        public void run() {
         TreePath currentSelection = resumeTree
           .getSelectionPath();
         if (currentSelection != null) {
          if (JOptionPane.showConfirmDialog(null,
            "确定要删除吗(资料将被删除)?", "提示",
            JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
           DefaultMutableTreeNode currentNode = (DefaultMutableTreeNode) (currentSelection
             .getLastPathComponent());
           DefaultMutableTreeNode parent = (DefaultMutableTreeNode) (currentNode
             .getParent());
           if (parent != null) {
            Object tp[] = currentSelection
              .getPath();
            StringBuffer sb = new StringBuffer();
            sb.append(rootPath);
            for (int i = 1; i < tp.length; i++) {
             sb.append("//" + tp[i]);
            }
            delFile(sb.toString());

            jTreeModel
              .removeNodeFromParent(currentNode);
           } else
            JOptionPane
              .showMessageDialog(
                null,
                "请选择根目录下的一个文件或者文件夹!",
                "提示",
                JOptionPane.INFORMATION_MESSAGE);
          }
         } else {
          JOptionPane
            .showMessageDialog(
              null,
              "请选择根目录下的一个文件或者文件夹!",
              "提示",
              JOptionPane.INFORMATION_MESSAGE);
         }
        }
       };
       delThread.start();
      }
     }
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
   JOptionPane.showMessageDialog(null, "运行出错,请检查出错原因!", "出错",
     JOptionPane.ERROR_MESSAGE);
  }
 }

 /**
  * 树的事件触发操作:打开树
  */
 public void valueChanged(TreeSelectionEvent e) {
  try {
   editButton.setEnabled(true);
   saveButton.setEnabled(false);
   Object tp[] = e.getPath().getPath();
   StringBuffer sb = new StringBuffer();
   sb.append(rootPath);
   for (int i = 1; i < tp.length; i++) {
    sb.append("//" + tp[i]);
   }
   selectPath = sb.toString();
   File resumeFile = new File(selectPath);
   if (resumeFile.isFile()) {
    String rPath = resumeFile.toURI().toURL().toString();//注意要转换为URL形式
    Document doc = editorPane.getDocument();
    doc.putProperty(Document.StreamDescriptionProperty, null);
    editorPane.setPage(rPath);
   }

  } catch (Exception ex) {
   ex.printStackTrace();
   JOptionPane.showMessageDialog(null, "打开文件出错!", "出错",
     JOptionPane.ERROR_MESSAGE);
  }

 }

 private void viewNode(DefaultMutableTreeNode tNode) { //展开树
  for (Enumeration nodes = tNode.breadthFirstEnumeration(); nodes
    .hasMoreElements();) {
   DefaultMutableTreeNode node = (DefaultMutableTreeNode) nodes
     .nextElement();
   resumeTree.expandPath(new TreePath(node.getPath()));
  }
 }

 public void delNode(DefaultMutableTreeNode tNode) { //删除tNode下的所有节点以及后续子节点
  TreePath currentSelection = new TreePath(tNode);

  if (currentSelection != null) {
   Enumeration nodes = rootNode.children();
   while (nodes.hasMoreElements()) {
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) nodes
      .nextElement();
    DefaultMutableTreeNode parent = (DefaultMutableTreeNode) (node
      .getParent());
    if (parent != null) {
     jTreeModel.removeNodeFromParent(node);//通知它从其父节点中移除节点
    }
    nodes = rootNode.children();//注意这里必须更新nodes,否则不能删除完全
   }
  }
 }

 public void delFile(String delPath) { //删除指定路径下的所有文件和子文件夹
  File searchDir = new File(delPath);
  if (searchDir.isFile()) {
   searchDir.delete();
   return;
  }
  String[] list = searchDir.list();
  int length = list.length;
  for (int i = 0; i < length; i++) {
   File resumeFile = new File(delPath + "//" + list[i]); //待搜索文件夹  

   if (!resumeFile.isFile()) //判断是否为文件
    delFile(resumeFile.getPath());//否则进入子文件夹递归删除       
   resumeFile.delete();
  }
  searchDir.delete();
 }

 /**
  * 树部分弹出菜单
  * @param e
  */
 public void jTree_mouseReleased(MouseEvent e) {
  if (e.isPopupTrigger()) {
   jTreePopupMenu.show(e.getComponent(), e.getX(), e.getY());
  }
 }

 class TreeDataModel implements Runnable {
  private String rootPath;

  private File rootDir;

  private TreePath visiblePath;

  public TreeDataModel(String rootPath, TreePath visiblePath) {
   this.rootPath = rootPath;
   rootDir = new File(rootPath);
   this.visiblePath = visiblePath;//获得路径
  }

  public void run() {
   //返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
   if (rootDir.isDirectory()) {
    String[] list = rootDir.list();
    initTree(list, rootPath, visiblePath);

   }
  }

  /**
   *
   * @param list:当前文件夹下的文件和子文件夹
   * @param rootPath:当前文件夹的路径
   * @param visiblePath:当前文件(文件夹)在树中的路径
   */
  public void initTree(String[] list, String rootPath,
    TreePath visiblePath) {
   for (int i = 0; i < list.length; i++) {
    //tp=resumeTree.getSelectionPath();  //获得路径
    DefaultMutableTreeNode dmtn = null; //定义一个新节点
    if (visiblePath == null) { //判断获得的节点是否为空
     dmtn = rootNode; //如果为空就设定新节点为根节点
    } else {
     dmtn = (DefaultMutableTreeNode) (visiblePath
       .getLastPathComponent());//否则就设为当前节点
    }

    DefaultMutableTreeNode chileNode = new DefaultMutableTreeNode(
      list[i]); //定义一个新节点(用于加入到树中)
    jTreeModel
      .insertNodeInto(chileNode, dmtn, dmtn.getChildCount()); //添加节点
    File searchDir = new File(rootPath + "//" + list[i]); //待搜索文件夹  

    if (searchDir.isDirectory()) { //递归加入节点
     resumeTree.setSelectionPath(new TreePath(chileNode
       .getPath()));
     TreePath currentPath = resumeTree.getSelectionPath(); //获得路径:形式如[简历库  , test]
     initTree(searchDir.list(), searchDir.getPath(), currentPath);
    }
   }
  }
 }

 /**
  * 鼠标操作适配器
  * @author qKF9319
  *
  */
 class MyResumePanel_jTreeModel_mouseAdapter extends MouseAdapter {

  private MyResumePanel adaptee;

  MyResumePanel_jTreeModel_mouseAdapter(MyResumePanel adaptee) {
   this.adaptee = adaptee;
  }

  public void mouseReleased(MouseEvent e) {
   adaptee.jTree_mouseReleased(e);
  }
 }

}
------------------------------

package com.resume.sky;

import java.io.*;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;

/**
 * 文件流操作类
 * @author qKF9319
 *
 */
public class ParseTxtContent {
 
   public static String path=ParseTxtContent.class.getResource("").toString();
 
 /**
  * 将流中的文本读入一个 StringBuffer 中
  * @throws IOException
  */
 public String readToBuffer(InputStream is)
   throws IOException {
  String line; // 用来保存每行读取的内容
  StringBuffer buffer=new StringBuffer();//读取的所有文本内容
  BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));//注意要和浏览器查看网页的编码方式一致
  line = reader.readLine(); // 读取第一行
  while (line != null) { // 如果 line 为空说明读完了
   buffer.append(line); // 将读到的内容添加到 buffer 中
   buffer.append("/n"); // 添加换行符
   line = reader.readLine(); // 读取下一行
  }
  return buffer.toString();
 }
 
 /**
  * 将流中的文本读入一个 StringBuffer 中
  * @throws IOException
  */
 public String readToNormalBuffer(InputStream is)
   throws IOException {
  String line; // 用来保存每行读取的内容
  StringBuffer buffer=new StringBuffer();//读取的所有文本内容
  BufferedReader reader = new BufferedReader(new InputStreamReader(is));
  line = reader.readLine(); // 读取第一行
  while (line != null) { // 如果 line 为空说明读完了
   buffer.append(line); // 将读到的内容添加到 buffer 中
   buffer.append("/n"); // 添加换行符
   line = reader.readLine(); // 读取下一行
  }
  return buffer.toString();
 }

 /**
  * 将 StringBuffer 中的内容读出到流中
  */
 public void writeFromBuffer(String buffer, OutputStream os) {
  // 用 PrintStream 可以方便的把内容输出到输出流中
  // 其对象的用法和 System.out 一样
  // (System.out 本身就是 PrintStream 对象)
  PrintStream ps = new PrintStream(os);
  ps.println(buffer);
 }

 /**
  * 从输入流中拷贝内容到输入流中
  * @throws IOException
  */
 public void copyStream(InputStream is, OutputStream os) throws IOException {
  // 这个读过过程可以参阅 readToBuffer 中的注释
  String line;
  BufferedReader reader = new BufferedReader(new InputStreamReader(is));
  PrintWriter writer = new PrintWriter(new OutputStreamWriter(os));
  line = reader.readLine();
  while (line != null) {
   writer.println(line);
   line = reader.readLine();
  }
  writer.flush(); // 最后确定要把输出流中的东西都写出去了
  // 这里不关闭 writer 是因为 os 是从外面传进来的
  // 既然不是从这里打开的,也就不从这里关闭
  // 如果关闭的 writer,封装在里面的 os 也就被关了
 }

 /**
  * 调用 copyStream(InputStream, OutputStream) 方法拷贝文本文件
  */
 public void copyTextFile(File inFilename, File outFilename)
   throws IOException {
  // 先根据输入/输出文件生成相应的输入/输出流
  InputStream is = new FileInputStream(inFilename);
  OutputStream os = new FileOutputStream(outFilename);
  copyStream(is, os); // 用 copyStream 拷贝内容
  is.close(); // is 是在这里打开的,所以需要关闭
  os.close(); // os 是在这里打开的,所以需要关闭
 }

 public static void main(String[] args) throws Exception {
 
  ParseTxtContent test = new ParseTxtContent();
     URL pathURL=ParseTxtContent.class.getResource("test.txt");
     //URL webContextURL=new URL("http://ehr.chinahr.com/Resume/ResumeCenter/ResumeSearch6.aspx");
     //URLConnection conn = webContextURL.openConnection();
     //conn.setConnectTimeout(20000);
     //BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    
     //File downPageFile=new File(pathURL.toURI());
     //FileOutputStream fos = new FileOutputStream(downPageFile);//输出的路径
    // String str = br.readLine();

    // while (str != null) {
     // fos.write(str.getBytes());
     // str = br.readLine();
    // }

    
  // 读文本
     //URI pathURI=webContextURL.toURI();
     URI pathURI=pathURL.toURI();
     File inputFile=new File(pathURI);
  InputStream is =new FileInputStream(inputFile);
  String readRes=test.readToBuffer(is);
  //System.out.println(readRes); // 将读到 buffer 中的内容写出来
  is.close();
  
  StringBuffer buffer = new StringBuffer();
  int searchContentTempIndex= readRes.indexOf("<!-- 现职位/链接 -->");
  int searchContentSIndex= readRes.indexOf("<a href",searchContentTempIndex);
  int totalRes=0;
  while(searchContentTempIndex!=-1)//搜索符合要求的内容
  {
   int searchContentEIndex= readRes.indexOf("</a>",searchContentSIndex);
   buffer.append(readRes.substring(searchContentSIndex, searchContentEIndex+4)+"/r/n");//注意添加/r/n
   searchContentTempIndex= readRes.indexOf("<!-- 现职位/链接 -->",searchContentEIndex);
   searchContentSIndex= readRes.indexOf("<a href",searchContentTempIndex);
   if(++totalRes>4)break;   
  }
  readRes=null;
  System.out.println(buffer); // 将读到 buffer 中的内容写出来
  // 写文本
  File outPutFile=new File(inputFile.getParent()+"//result.txt");//注意路径带//
  test.writeFromBuffer(buffer.toString(),new FileOutputStream(outPutFile));
 
 }

}
---------------------------------------

package com.resume.sky;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;

/**
 * 菜单类
 * @author qKF9319
 *
 */
public class ResumeMenu extends JPanel implements ActionListener {

 private JMenuBar mb = new JMenuBar();

 private JMenu fm = new JMenu("文件");

 private JMenu hm = new JMenu("帮助");


 JMenuItem[] file = { new JMenuItem("打开简历..."), new JMenuItem("退出") };

 JMenuItem[] help = { new JMenuItem("说明"), new JMenuItem("关于...")};

 public ResumeMenu() {
  this.setLayout(new BorderLayout());

  for (int i = 0; i < help.length; i++) {
   hm.add(help[i]);
   help[i].addActionListener(this);
  }

  for (int i = 0; i < file.length; i++) {
   fm.add(file[i]);
   file[i].addActionListener(this);
  }
 
  mb.add(fm);
  mb.add(hm);

  fm.addActionListener(this);
  hm.addActionListener(this);
  this.add(mb);

 }

 public void actionPerformed(ActionEvent evt) {
  
  if (evt.getActionCommand().equals("打开简历...")) {
   final SelefDefFileChooser jfc = new SelefDefFileChooser(new File("E://Resume Files"));
   //add Filters
   String htmlExts[] = { "html", "htm" };

   // construct it giving it an array of file
   // extensions and a description string
   FileFilter filter = new GenericFileFilter(htmlExts);
   jfc.addChoosableFileFilter(filter);

   jfc.setDialogType(JFileChooser.OPEN_DIALOG);
   int state = jfc.showOpenDialog(null);

   if (state == JFileChooser.APPROVE_OPTION) {

    File resumeFile = jfc.getSelectedFile();
    try {
      String fName = resumeFile.toURI().toURL().toString();//注意要转换为URL形式
      final JFrame jPopFrame = new JFrame("简历:" + fName);
      JPanel jExitPanel = new JPanel();
      jPopFrame.getContentPane()
        .setLayout(new BorderLayout(5,10));
      jPopFrame.setBounds(100, 200, 900, 700);

      JButton exitButton = new JButton("退 出");
      exitButton.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        jPopFrame.dispose();
       }
      });
      final JEditorPane editorPane = new JEditorPane();
      editorPane.setEditable(false);

      editorPane.setPage(fName);
      JScrollPane scrollPane1 = new JScrollPane(editorPane);
      jExitPanel.add(exitButton);
      jPopFrame.add(scrollPane1, BorderLayout.CENTER);
      jPopFrame.add(jExitPanel, BorderLayout.SOUTH);

      //jPopFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      jPopFrame.validate();

      jPopFrame.setVisible(true);

     } catch (Exception e) {
      e.printStackTrace();
      JOptionPane.showMessageDialog(null, "打开文件出错!", "出错",
        JOptionPane.ERROR_MESSAGE);
     }
    
   }

  } else if (evt.getActionCommand().equals("退出")) {
   if (JOptionPane.showConfirmDialog(this, "您确定要退出吗?", "提示",
     JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
    System.exit(0);
   }
  } else if (evt.getActionCommand().equals("关于...")) {
   final JFrame frame = new JFrame();
   frame.setLayout(new BorderLayout(2, 2));
   frame.setTitle("关于 简历自动下载器");
   frame.setBounds(200, 150, 350, 350);
   JPanel jInfoPanel=new JPanel();
   jInfoPanel.setLayout(new BorderLayout(2, 2));
   JLabel jMesg = new JLabel(
     "<html><p align=center><b>简历自动下载器<B>Version 1.0 </p><br> <p align=center >作者 ql   日期 2007.11</p></html>",
     JLabel.CENTER);
   jMesg.setFont(new Font("宋体", Font.PLAIN, 15));
   ImageIcon icon=new ImageIcon(System.getProperty("user.dir")+"/img/logo.jpg");//user.dir当前工作目录
   JLabel jLogo=new JLabel(icon,JLabel.CENTER);
   jInfoPanel.add(jLogo, BorderLayout.SOUTH);
   jInfoPanel.add(jMesg, BorderLayout.CENTER);
   frame.add(jInfoPanel, BorderLayout.CENTER);
   
   JButton exitButton=new JButton("确 定");
   exitButton.addActionListener(
     new ActionListener() {
               public void actionPerformed(ActionEvent e) {
                frame.dispose();
               }
   });
   JPanel jExitPanel=new JPanel();
   jExitPanel.add(exitButton);  
   frame.add(jExitPanel, BorderLayout.SOUTH);  
   frame.setVisible(true);
   frame.setResizable(false);
  }
  else
  {
   if (evt.getActionCommand().equals("说明")) {
    try {
     //System.out.println(System.getProperty("user.dir"));//C:/Program
     // Files/IBM/Rational/SDP/6.0
     Runtime rt = Runtime.getRuntime(); //Time and Date.
     rt.exec("notepad "+System.getProperty("user.dir")+"/img/note.txt");

    } catch (Exception e1) {
     e1.printStackTrace();
     JOptionPane.showMessageDialog(null, "打开文件出错!", "出错",
       JOptionPane.ERROR_MESSAGE);
    }
   }
  }
 }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值