Java小程序——文件选择器,超实用

今天来一个小项目——文件选择器。他的主要功能是根据用户输入的文件扩展名和所选择的文件夹,输出文件夹下该类型的所有文件名和文件大小以及文件最后一次修改的时间。
先来看看具体效果吧:
Java小程序——文件选择器,超实用_第1张图片

下面给出具体的实现代码:

package cn.com;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FilenameFilter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;

public class FileLists extends JFrame
{
	
	private JTextField text;
	private JButton button;
	private JTable table;
	
	/*
	 * 构造函数
	 */
	public FileLists()
	{
		init();
	}
	
	/*
	 * 初始化函数
	 */
	public void init()
	{
		JPanel nor_pan = new JPanel(new GridLayout(1,3));
		JScrollPane cen_pan = new JScrollPane();
		
		
		/*
		 * 初始化类变量
		 */
		
		
		//1、初始化文本框
		this.text =  new JTextField();
		this.text.setPreferredSize(new Dimension(150 , 30));
		this.text.setHorizontalAlignment(this.text.CENTER); 					//设置文本框居中输入
		this.text.setBorder(BorderFactory.createLineBorder(Color.red, 2));//设置边框为线边框
		
		//2、初始化表格
		//DefaultTableModel model1 = new DefaultTableModel();
		this.table = new JTable(new DefaultTableModel())
			{
				private static final long serialVersionUID = 1L;
				
			//表格不允许被编辑
            public boolean isCellEditable(int row, int column)
            {            
            		return false;            	                         
            }         
            };
	
		JTableHeader tab_header = this.table.getTableHeader();					//获取表头
		tab_header.setFont(new Font("微软雅黑", Font.PLAIN, 15));	
		tab_header.setPreferredSize(new Dimension(tab_header.getWidth(), 30));	//修改表头的高度
		this.table.setFont(new Font("微软雅黑", Font.PLAIN, 13));
		this.table.setRowHeight(30); 											//设置表格体的行高
		DefaultTableModel model =(DefaultTableModel)this.table.getModel();		//获取表格模型
		model.setColumnIdentifiers(new Object[] {"文件名" , "文件大小(B)" , "修改时间"});//修改表头内容
		
		//3、初始化按钮
		this.button = new JButton("选择文件夹");
		this.button.setBorderPainted(false);
		this.button.setFocusPainted(false);
		this.button.setFont(new Font("微软雅黑", Font.PLAIN, 15));
		this.button.setPreferredSize(new Dimension(120 , 30));
		

		JLabel nLabel = new JLabel("请输入文件扩展名:"); 							//设置标签显示信息
		nLabel.setFont(new Font("微软雅黑", Font.PLAIN, 15));
		nor_pan.add(nLabel);
		
		//将组件添加到上面板
		nor_pan.add(nLabel);
		nor_pan.add(this.text);
		nor_pan.add(this.button);
		cen_pan.add(this.table);
		cen_pan.setViewportView(table);											//设置一个可见视图
		
		//将面板添加到容器内
		this.add(nor_pan , BorderLayout.NORTH);
		this.add(cen_pan , BorderLayout.CENTER);
		

		//注册监视器
		this.button.addActionListener(new ActionListener()
				{
					@Override
					public void actionPerformed(ActionEvent e) 
					{
						do_button_actionPerformed(e);				
						
					}
			
				});
		
		
		//窗体属性设置
		this.setVisible(true);
		//this.setSize(450, 600);
		this.pack();
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setTitle("文件过滤器");
		this.setLocationRelativeTo(null);
		
	}
	
	//处理按钮事件
	private void do_button_actionPerformed(ActionEvent e)
	{
		String fileType = this.text.getText();									//获取用户输入
		if (fileType.isEmpty())
		{
			JOptionPane.showMessageDialog(null, "请输入您要查找的文件类型",null ,JOptionPane.WARNING_MESSAGE);
			return;
		}
		
		//选择文件夹之前情况表格
		DefaultTableModel model0 =(DefaultTableModel)this.table.getModel();		//获取表格模型
		model0.setRowCount(0);
		this.table.setModel(model0);
		
		JFileChooser file_choose = new JFileChooser();							//文件选择器
		
		file_choose.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY);	//设置只可以选择文件夹
		file_choose.setMultiSelectionEnabled(false); 						//禁止选择多个文件夹
		
		int result = file_choose.showOpenDialog(this);						//打开选择文件时弹出的框
		
		//选择确认(yes、ok)后返回该值
		if (result == JFileChooser.APPROVE_OPTION)
		{
			File files[] = file_choose.getSelectedFile().listFiles(new FilenameFilter()
					{
						public boolean accept(File dir, String name) 
						{
							return name.endsWith(fileType);
						}
				
					});
			
			//获取到对应的文件之后就增加表格输出对应信息
			
			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");	//指定日期格式
			DefaultTableModel model1 =(DefaultTableModel)this.table.getModel();		//获取表格模型
			
			for(File file : files)
			{
				model1.addRow(new Object[] {file.getName() , file.length() , format.format(new Date(file.lastModified()))});
			}
			this.table.setModel(model1);
		
		
		}
	}

}

有问题的可以私聊博主哟~~~

你可能感兴趣的:(Java小程序——文件选择器,超实用)