首页 > 其他 > 详细

利用JFileChooser实现文件选择对话框

时间:2019-11-26 21:46:16      阅读:99      评论:0      收藏:0      [点我收藏+]

简单的文件选择对话框:

package mypackage;
/**
 * 打开文件和存储文件
 */
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class FileChooserUtils implements ActionListener {
 JFrame f = null;
 JLabel label = null;
 JTextArea textarea = null;
 JFileChooser fileChooser = null;
 public FileChooserUtils() {
  f = new JFrame("FileChooser Example");
  Container contentPane = f.getContentPane();
  textarea = new JTextArea();
  JScrollPane scrollPane = new JScrollPane(textarea);
  scrollPane.setPreferredSize(new Dimension(350, 300));
  JPanel panel = new JPanel();
  JButton b1 = new JButton("新建文件");
  b1.addActionListener(this);
  JButton b2 = new JButton("存储文件");
  b2.addActionListener(this);
  panel.add(b1);
  panel.add(b2);
  label = new JLabel(" ", JLabel.CENTER);
  fileChooser = new JFileChooser("D:\\");
  contentPane.add(label, BorderLayout.NORTH);
  contentPane.add(scrollPane, BorderLayout.CENTER);
  contentPane.add(panel, BorderLayout.SOUTH);
  f.pack();
  f.setVisible(true);
  f.addWindowListener(new WindowListener() {
   @Override
   public void windowOpened(WindowEvent e) {
    // TODO Auto-generated method stub
   }
   @Override
   public void windowIconified(WindowEvent e) {
    // TODO Auto-generated method stub
   }
   @Override
   public void windowDeiconified(WindowEvent e) {
    // TODO Auto-generated method stub
   }
   @Override
   public void windowDeactivated(WindowEvent e) {
    // TODO Auto-generated method stub
   }
   @Override
   public void windowClosing(WindowEvent e) {
    System.exit(0);
   }
   @Override
   public void windowClosed(WindowEvent e) {
    // TODO Auto-generated method stub
   }
   @Override
   public void windowActivated(WindowEvent e) {
    // TODO Auto-generated method stub
   }
  });
 }
 public static void main(String[] args) {
  new FileChooserUtils();
 }
 public void actionPerformed(ActionEvent e) {
  File file = null;
  int result;
  if (e.getActionCommand().equals("新建文件")) {
   fileChooser.setApproveButtonText("确定");
   fileChooser.setDialogTitle("打开文件");
   result = fileChooser.showOpenDialog(f);
   textarea.setText("");
   if (result == JFileChooser.APPROVE_OPTION) {
    file = fileChooser.getSelectedFile();
    label.setText("您选择打开的文件名称为:" + file.getName());
   } else if (result == JFileChooser.CANCEL_OPTION) {
    label.setText("您没有选择任何文件");
   }
   FileInputStream fileInStream = null;
   if (file != null) {
    try {
     fileInStream = new FileInputStream(file);
     
    } catch (FileNotFoundException e2) {
     label.setText("File Not Found");
     return;
    }
    int readbyte;
    try {
     while ((readbyte = fileInStream.read()) != -1) {
      textarea.append(String.valueOf((char) readbyte));
     }
    } catch (IOException e2) {
     label.setText("读取文件错误");
    } finally {
     try {
      if (fileInStream != null)
       fileInStream.close();
     } catch (IOException e3) {
     }
    }
   }
  }
  if (e.getActionCommand().equals("存储文件")) {
   result = fileChooser.showSaveDialog(f);
   file = null;
   String fileName;
   if (result == JFileChooser.APPROVE_OPTION) {
    file = fileChooser.getSelectedFile();
    label.setText("您选择存储的文件名称为:" + file.getName());
   } else if (result == JFileChooser.CANCEL_OPTION) {
    label.setText("您没有选择任何文件");
   }
   FileOutputStream fileOutStream = null;
   if (file != null) {
    try {
     fileOutStream = new FileOutputStream(file);
    } catch (FileNotFoundException e2) {
     label.setText("File Not Found");
     return;
    }
    String content = textarea.getText();
    try {
     fileOutStream.write(content.getBytes());
    } catch (IOException e2) {
     label.setText("写入文件错误");
    } finally {
     try {
      if (fileOutStream != null)
       fileOutStream.close();
     } catch (IOException e3) {
     }
    }
   }
  }
 }
}
 
可选择文件类型的文件选择对话框:
package mypackage;
/**
 * 文件过滤
 */
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.filechooser.FileFilter;
public class FileFilterUtils implements ActionListener{
 
 JFrame f = null;
 JLabel label = null;
 JFileChooser fileChooser = null;
 
 public FileFilterUtils() {
  f= new JFrame("FileFilter");
  Container contentPane = f.getContentPane();
  
  JButton b = new JButton("打开文件");
  
  b.addActionListener(this);
  
  label = new JLabel(" ",JLabel.CENTER);
  label.setPreferredSize(new Dimension(150, 30));
  contentPane.add(label,BorderLayout.CENTER);
  contentPane.add(b,BorderLayout.SOUTH);
  
  f.pack();
  f.setVisible(true);
  f.addWindowListener(new WindowListener() {
   
   @Override
   public void windowOpened(WindowEvent e) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void windowIconified(WindowEvent e) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void windowDeiconified(WindowEvent e) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void windowDeactivated(WindowEvent e) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void windowClosing(WindowEvent e) {
    System.exit(0);
    
   }
   
   @Override
   public void windowClosed(WindowEvent e) {
    // TODO Auto-generated method stub
    
   }
   
   @Override
   public void windowActivated(WindowEvent e) {
    // TODO Auto-generated method stub
    
   }
  });
 }
 
 public static void main(String[] args) {
  new FileFilterUtils();
 }
 
 public void actionPerformed(ActionEvent e) {
  fileChooser = new JFileChooser("c:\\");
  fileChooser.addChoosableFileFilter(new JAVAFileFilter("class"));
  fileChooser.addChoosableFileFilter(new JAVAFileFilter("java"));
  int result = fileChooser.showOpenDialog(f);
  if(result == JFileChooser.APPROVE_OPTION) {
   File file = fileChooser.getSelectedFile();
   label.setText("您选择了:"+file.getName()+"文件");
  }else if(result == fileChooser.CANCEL_OPTION) {
   label.setText("您没有选取文件");
  }
 }
}
 class JAVAFileFilter extends FileFilter{
  String ext;
  
  public JAVAFileFilter(String ext) {
   this.ext = ext;
  }
  
  public boolean accept(File file) {
   if(file.isDirectory())
    return true;
   
   String fileName = file.getName();
   int index = fileName.lastIndexOf(‘.‘);
   if(index > 0&& index<fileName.length()-1) {
    String extension = fileName.substring(index+1).toLowerCase();
    if(extension.equals(ext))
     return true;
   }
   return false;
  }
  
  public String getDescription() {
   if(ext.equals("java"))
    return "JAVA Source File (*.java)";
   if(ext.equals("class"))
    return "JAVA Source File (*.class)";
   return "";
  }
 }
 

利用JFileChooser实现文件选择对话框

原文:https://www.cnblogs.com/jungledove/p/11938480.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!