界面化文件搜索器

来源:互联网 发布:u盘格式化数据恢复 编辑:程序博客网 时间:2024/06/05 07:25

       文件搜索2_____基于图形界面

 

 

上次做过控制台的文件搜索,感觉不过瘾,就估摸着做了一个界面化的搜索。在这里使用了JChooser控件来选择目录位置,加载一个滚动面板,用到了JList在滚动面板上加载数据。最后使用了皮肤包来美化界面。做这些东西感觉会有弱弱的成就感。

 

   首先展示一下没有使用皮肤包的效果

 



 上面是java系统自己的界面,下面是美化后的界面

 

 

 



 

 

 我们可以看到美化后的界面给人的感觉很不错

 

我们看看这个文件搜索的主要代码,搜索文件的代码和上次写的有些稍微的不同,就是要把,搜索到的文件加入队列

 

 

import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.util.ArrayList;import javax.swing.JTextField;public class SearchListener implements ActionListener{//声明两个文本框private JTextField jtfFileName;private JTextField jtfPosition;ArrayList strFindFiles= new ArrayList<String>();private static int countFile=0;//两个字符串用来储存文件位置和名称String fileName;String filePosition;public SearchListener(JTextField jtfFileName,JTextField jtfPosition) {//将传递过来的文本框付给自己的this.jtfFileName=jtfFileName;this.jtfPosition=jtfPosition;}@Overridepublic void actionPerformed(ActionEvent e) {//清空列表strFindFiles.clear(); for(int i=0;i<strFindFiles.toArray().length;i++){ System.out.println(strFindFiles.toArray()[i]); }//得到文本框中的内容 fileName=jtfFileName.getText(); filePosition=jtfPosition.getText(); searchFile(filePosition); //在 UI.FileList.setListData(strFindFiles.toArray());}private void searchFile(String filePosition) {//创建文件File dirFile=new File(filePosition);File[] resFile=dirFile.listFiles();if(resFile==null||resFile.length==0){return;}for(int i=0;i<resFile.length;i++){if(resFile[i].isDirectory()){//得到文件夹的名字String subDir=resFile[i].getAbsolutePath();//判断文件夹是否含有关键字if(subDir.contains((CharSequence) fileName)){//如果含有,将文件夹的路径加到队列中strFindFiles.add(resFile[i].getAbsolutePath());}//递归到下一个文件夹searchFile(subDir);}//如果是文件if(resFile[i].isFile()){//得到文件名String name=resFile[i].getName();//判断是否含有关键字if(name.contains((CharSequence)fileName)){//如何含有将文件的居然对路径加到队列中strFindFiles.add(resFile[i].getAbsolutePath());}}}}}

 

 下面的是UI 的一些主要代码

 

 

 

 

 

 

public void init() {// 用指定的图片替换界面左上角的咖啡图标Toolkit tk=Toolkit.getDefaultToolkit();    Image img=tk.getImage("F:\\ling.jpg");    this.setIconImage(img);        //初始化界面的基本信息this.setTitle("文件查找器");this.setSize(700, 600);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setLayout(null);//用皮肤包美化界面//try {//// 设置本属性将改变窗口边框样式定义//BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;//org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();//} catch (Exception e) {//// TODO Auto-generated catch block//e.printStackTrace();//}// 下面开始添加其他的组件// 添加一个标签JLabel jplPST = new JLabel("选择文件夹位置:");jplPST.setBounds(80, 20, 120, 30);this.add(jplPST);// 添加一个浏览按钮JButton jbtSkim = new JButton("浏览");jbtSkim.setBounds(520, 20, 70, 30);this.add(jbtSkim);// 添加一个关键字提示标签JLabel jlKW = new JLabel("请输入文件名称:");jlKW.setBounds(80, 60, 110, 30);this.add(jlKW);// 添加一个搜索按钮JButton jbtSearh = new JButton("搜索");jbtSearh.setBounds(520, 60, 70, 30);this.add(jbtSearh);////设置面板的颜色//jplFiles.setBackground(Color.white);////设置面板的位置//jplFiles.setBounds(50, 110, 600, 420);//this.add(jplFiles);//下步比较重要,为面板添加一个滚动面板//jplFiles.add(new JScrollPane(FileList,//JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,//JScrollPane.HORIZONTAL_SCROLLBAR_NEVER));//设置JList的行数FileList.setVisibleRowCount(25);//设置JList的宽度FileList.setFixedCellWidth(550);//添加一个滚动面板,数据的加载设置为FileListJScrollPane jsp=new JScrollPane(FileList,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);//设置滚动面板的位置jsp.setBounds(50, 110, 600, 420);this.add(jsp);//显示界面this.setVisible(true);jbtSkim.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {//声明一个JChooser来获得一个查找文件夹的路径JFileChooser fch = new JFileChooser();//设置当前的文件选择模式,这里设置为只选择文件夹fch.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);//显示文件选择窗口int option = fch.showDialog(UI.this, null);//若用户选择打开则执行if (option == JFileChooser.APPROVE_OPTION) {//获得绝对路径String path = fch.getSelectedFile().getAbsolutePath();//将绝对路径放到目录文本框中jtfPosition.setText(path);}}});// 为搜索按钮添加一个监听SearchListener sl = new SearchListener(jtfFileName, jtfPosition);//为按钮添加一个监听器jbtSearh.addActionListener(sl);}

 

不过程序还有一个很大的缺陷。就是在面板上加载的文件信息只能呈现在面板上,而不能像操作系统自带的文件搜索程序那样,在可以单击搜索到的文件并用特定的程序打开。对于这个缺陷会在以后的编写中慢慢的加上去。。具体的程序代码,我附在附件上了

 

<!--EndFragment--><!--EndFragment-->

 

<!--EndFragment-->
原创粉丝点击