【问题标题】:Java swing file chooser date filter or file dialog date filterJava swing 文件选择器日期过滤器或文件对话框日期过滤器
【发布时间】:2013-04-03 05:29:07
【问题描述】:

提供在文件选择器或文件对话框中获取当前日期或请求日期文件的示例代码? 我需要在文件对话框中过滤带有日期的文件吗?

【问题讨论】:

  • 请自己尝试一下。提示 - 检查您是否可以使用文件过滤器。
  • 你有没有尝试过?
  • ya.. 但我无法在文件对话框中过滤日期
  • 为什么不呢? File 类有一个 lastModified() 方法,您可以在 FileFilter 中使用。

标签: java swing filedialog filechooser


【解决方案1】:

首先,我不确定是否存在使用日期的现有文件过滤器,所以对我来说最好和快速的解决方案是实现我自己的过滤器:

public class DateFileFilter extends FileFilter  
{    
     public boolean accept(File file)  
     {   
          GregorianCalendar date = new GregorianCalendar();//I get the today value  

          GregorianCalendar fileDate = new GregorianCalendar();  
          fileDate.setTimeInMillis(file.lastModified());//Here I get date info of the file 

          //Compare the current month and year  
          //with the month and yearthe file was  
          //last modified  
          return (((date.get(GregorianCalendar.MONTH) ==  
                fileDate.get(GregorianCalendar.MONTH)) &&  
               (date.get(GregorianCalendar.YEAR)  ==  
                fileDate.get(GregorianCalendar.YEAR))) ||  
               file.isDirectory());  
    }   

    public String getDescription()  
    {  
        return "This is my filter for dates (:";  
    }  
}  

然后您可以将过滤器添加到 JFileChooser:

JFileChooser jf = new JFileChooser();
jf.setFileFilter(/*HERE MY DATE FILTER*/);

对于文件对话框,过程应该类似:

DateFileFilter filter = new DateFileFilter();
FileDialog dialog = new FileDialog(parent, "Choose File");   

        dialog.setFilenameFilter(filter);  

        dialog.show();  

        String selectedFile = dialog.getFile();   

但我认为您也可以实现“过滤器”接口而不是“扩展”。

希望它有所帮助,最好的问候(:

【讨论】:

  • 为什么使用GregorianCalendar?您应该使用Calendar.getInstance(),更好的是,只需使用new Date()Date(和 Calendar)有 beforeaftercompareTo 比较 Date 对象的方法。似乎需要做很多额外的工作却收效甚微 - 恕我直言
  • 你可以对文件对话框做同样的事情吗??
  • 我进行了编辑,希望对您有所帮助。 @MadProgrammer,感谢您的观察,我会考虑用它来重构我的代码。
  • 即使我在过滤的接受函数中提到为假,它也不会过滤
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2014-12-21
  • 1970-01-01
相关资源
最近更新 更多