简单文件搜索器的实现
说实话,哥不喜欢做总结。原因之一:发现网上前辈的总结已经很完善,或是比我写的还要充实。深感自己资历尚浅,惭愧之余,觉得实在没必要再为如此杂乱的网络环境添乱了。但总结还是得写,毕竟好记忆不如烂笔头,写精简一些、思路到位就是了,别人写得好的,就带个链接,也算积点阴德吧,嘿嘿。
本人觉得知识点是死的,唯有将它们组织起来,实现他们之间的交互,学起来才会有生气。如此,写总结就不会没话可说了,尽管做得确实不咋的。
本小项目实现了根据输入的关键字对选定目录下所有文件进行检索并列出文件名中包含关键字的文件的功能,以及检测选定文件内容中是否包含某关键字的功能。
主界面如图所示:
○1此界面的上三行两列明显用的是GridLayout(网格)布局管理器,该管理器在java.awt包下,声明此类布局管理器的对象的格式如下:
int a; int b; GridLayout gridLayout = new GridLayout(a,b);a为行数;b为列数;添加组件时根据添加的顺序从左到右(此为默认,可修改,但未试过)排完一行再到下一行。上面六个组件装在一个Jpanel里,下面的列表也装在(非直接)另一个Jpanel中,再用一个BorderLayout管理器装在到主界面上。该管理器的简单用法如下:
JFrame frame = new JFrame(“***”);frame.setLayoutManager(new BorderLayout());Button b1 = new Button(“1”);Button b2 = new Button(“2”);Button b3 = new Button(“3”);Button b4 = new Button(“4”);Button b5 = new Button(“5”);//添加格式Frame.add(b1,BorderLayout.NORTH);//添加到上方Frame.add(b2,BorderLayout.LEFT);//添加到左边Frame.add(b3,BorderLayout.CENTER);// 添加到中间Frame.add(b4,BorderLayout.RIGHT);// 添加到右边Frame.add(b5,BorderLayout.SOUTH);// 添加到下方FlowLayout、GridLayout以及BorderLayout是三个最常用的布局管理器,其中GridLayout和BorderLayout会使控件将从面板分配到的空间填充。此三个布局管理器非常易用,但面对要求用大小不一的控件编排出复杂的界面时,其局限性就显示出来了。此时就需要用到GridBagLayout(网袋)布局管理器了,其用法非常灵活,也很难,曾在做连连看的界面中用到,但对其用法还是很陌生。这里就先不介绍了。
DefaultListModel fileListModel = new DefaultListModel();/*高级组件一般都配有Model(实例(本人觉得如此翻译较为合适)),此为高级组件的灵魂所在大凡涉及到数据的操作必须劳烦Model*/JList fileList = new JList(fileListModel);//如此声明Jlist对象JScrollPane sp = new JScrollPane(fileList);/*只有将Jlist对象装进JscrollPane中才能实现滚动条本小项目中Jlist实例对象对数据操作用到的方法*/((DefaultListModel) fileList.getModel() ).addElement(Object obj);/*添加数据的方法必须先通过Jlist实例对象获取Model,再通过Model来操作数据*/((DefaultListModel) fileList.getModel() ).getElementAt(int index);//获取数据的方法((DefaultListModel) fileList.getModel() ).clean();//删除所有数据
JfileChooser chooser = new JfileChooser(Sring path);//该构造函数通过path来设置默认路径chooser.setFileSelectionMode(JfileChooser.DIRECTORIES_ONLY);/* 常量DIRECTORIES_ONLY指定选择器只能选择目录,FILES_ONLY指定选择器只能选择文件,FILES_AND_DIRECTORIES为两者皆可*/int returnVal = chooser.showOpenDialog(null);//获取对话框的返还值if(returnVal == JfileChooser.APPROVE_OPTION){/*当返回值等于常APPROVE_OPTION时,为按下了确认键后触发的返回值*/……//方法体}String key;……Boolean check = key.matches(“\\s+”) ;//意思是当key中存在空白字符时,其值为真。○5本小项目中还为Jlist实例对象实现了鼠标监听,当双击列表中的元素时会弹出一个对话框,可输入关键字,并检测选定文件内容中是否包含该关键字,也可检测列表中所有文件内容中是否包含该关键字,并将包含该关键字文件重新列在列表上。