思路分析:
因为是窗体应用,首先看视图层。需要一个按钮控件JButton用来选择文件夹;需要一个标签控件JLabel用来显示选择的路径;需要一个标签控件JLabel提示用户输入什么;需要一个文本框控件JTextField供用户输入文件类型;需要一个表格控件JTable显示选中目录下指定类型的文件。
对于按钮控件,为其绑定事件处理方法,在该方法中首先创建JFileChooser文件选择器对象,为该对象设置选择器的过滤器,即通过JFileChoose类的setFileSelectionMode()方法设定只能选择路径,然后执行showDialog()方法,再使用JFileChooser类的getSelectedFile()方法获取选中路径,赋值给一个File型变量,使用toString()方法将该路径显示在标签中,最后获取过滤后的符合条件的文件数组。
对于文本框控件,一旦里面的文字发生变化,就要重新对选中路径中的文件进行过滤,所以通过JTextField类的addCaretListener()方法为其绑定事件处理方法,在该方法中获取过滤后的符合条件的文件数组。
因为按钮控件和文本框控件都要实现过滤及显示,故可以将过滤及显示单独作为一个方法,在该方法中首先判断当前路径是否为空,若不为空则使用File类的listFiles()方法获取符合条件的文件数组,赋值给一个File型数组,然后使用JTable类的getModel()方法获取表格的数据模型,使用DefaultTableModel类的setRowCount()方法先将表格清空,然后使用foreach()循环遍历文件数组,在循环中使用Object[]数组创建表格行数据,调用File类的getName()方法获取文件名,length()方法获取文件大小,lastModified()方法获取修改日期,最后使用DefaultTableModel类的addRow()方法添加行数据到表格模型。
代码如下:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.sql.Date;
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.s