how2j.cn

下载区
文件名 文件大小
datepicker.jar 53k
swingx-core-1.6.2.jar 1m

工具版本兼容问题
swing没有自带的日期控件,需要第三方的类
jar包可以在右侧下载


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



5分48秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



步骤 1 : DatePicker   
步骤 2 : JXDatePicker   
步骤 3 : 练习-统计文件数量   
步骤 4 : 答案-统计文件数量   

本例使用 datepicker.jar 包,有一个缺点,不能设置时间,只能在创建控件的时候传入指定日期。
需要设置日期,请使用JXDatePicker
DatePicker
package gui; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import java.util.Locale; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import com.eltima.components.ui.DatePicker; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(null); final DatePicker datepick; datepick = getDatePicker(); f.add(datepick); JButton b = new JButton("获取时间"); b.setBounds(137, 183, 100, 30); f.add(b); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(f, "获取控件中的日期:" + datepick.getValue()); System.out.println(datepick.getValue()); } }); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } private static DatePicker getDatePicker() { final DatePicker datepick; // 格式 String DefaultFormat = "yyyy-MM-dd HH:mm:ss"; // 当前时间 Date date = new Date(); // 字体 Font font = new Font("Times New Roman", Font.BOLD, 14); Dimension dimension = new Dimension(177, 24); int[] hilightDays = { 1, 3, 5, 7 }; int[] disabledDays = { 4, 6, 5, 9 }; datepick = new DatePicker(date, DefaultFormat, font, dimension); datepick.setLocation(137, 83); datepick.setBounds(137, 83, 177, 24); // 设置一个月份中需要高亮显示的日子 datepick.setHightlightdays(hilightDays, Color.red); // 设置一个月份中不需要的日子,呈灰色显示 datepick.setDisableddays(disabledDays); // 设置国家 datepick.setLocale(Locale.CHINA); // 设置时钟面板可见 datepick.setTimePanleVisible(true); return datepick; } }
本例使用 包swingx-core-1.6.2.jar,界面比较简约,可以设置日期
JXDatePicker
package gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import org.jdesktop.swingx.JXDatePicker; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(400, 300); f.setLocation(200, 200); f.setLayout(null); Date date = new Date(); final JXDatePicker datepick = new JXDatePicker(); // 设置 date日期 datepick.setDate(date); datepick.setBounds(137, 83, 177, 24); f.add(datepick); JButton b = new JButton("获取时间"); b.setBounds(137, 183, 100, 30); f.add(b); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 获取 日期 Date d = datepick.getDate(); JOptionPane.showMessageDialog(f, "获取控件中的日期 :" + d); } }); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }
步骤 3 :

练习-统计文件数量

edit Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
借助时间控件,选中一个时间,然后根据这个时间,统计e:\project 修改时间大于这个时间的文件,一共有多少
练习-统计文件数量
步骤 4 :

答案-统计文件数量

edit
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 中级总计0个答案 (总共需要0积分)
查看本答案会花费4个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 中级总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

7分58秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)


package gui; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.Locale; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import com.eltima.components.ui.DatePicker; public class TestGUI { public static void main(String[] args) { JFrame f = new JFrame("LoL"); f.setSize(500, 300); f.setLocation(200, 200); f.setLayout(null); final DatePicker datepick; datepick = getDatePicker(); f.add(datepick); JButton b = new JButton("统计在D:/eclipse3.1 目录下,修改时间大于控件日期的文件总数"); b.setBounds(20, 183, 450, 30); f.add(b); b.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { File folder = new File("D:\\eclipse3.1"); Date d = (Date) datepick.getValue(); JOptionPane.showMessageDialog(f, "文件总数是:" + countFilesModifiedDateGreaterThan(folder, d)); } }); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } private static DatePicker getDatePicker() { final DatePicker datepick; // 格式 String DefaultFormat = "yyyy-MM-dd HH:mm:ss"; // 当前时间 Date date = new Date(); // 字体 Font font = new Font("Times New Roman", Font.BOLD, 14); Dimension dimension = new Dimension(177, 24); int[] hilightDays = { 1, 3, 5, 7 }; int[] disabledDays = { 4, 6, 5, 9 }; datepick = new DatePicker(date, DefaultFormat, font, dimension); // datepick.setLocation(137, 83); datepick.setBounds(137, 83, 177, 24); // 设置一个月份中需要高亮显示的日子 datepick.setHightlightdays(hilightDays, Color.red); // 设置一个月份中不需要的日子,呈灰色显示 datepick.setDisableddays(disabledDays); // 设置国家 datepick.setLocale(Locale.CHINA); // 设置时钟面板可见 datepick.setTimePanleVisible(true); return datepick; } public static List<File> scanFolder(File folder){ List<File> files = new ArrayList<>(); File[] fs = folder.listFiles(); for (File f : fs) { if(f.isDirectory()){ List<File> subFolderFiles = scanFolder(f); files.addAll(subFolderFiles); } if(f.isFile()){ files.add(f); } } return files; } public static long countFilesModifiedDateGreaterThan(File folder,Date d){ List<File> fs = scanFolder(folder); return fs.stream() .filter(f->f.lastModified()>d.getTime()) .count(); } }


HOW2J公众号,关注后实时获知布最新的教程和优惠活动,谢谢。


问答区域    
2019-04-06 交作业
歪脖树下自逍遥



作业
public class DatePickerTest {
	private static int counter=0;
	private static int filesum=0;
	
	public static void main(String[] args) {
		String filesrc="F:/allcode";
		   
        JFrame f = new JFrame("LoL");
        f.setSize(405, 300);
        f.setLocation(200, 200);
        f.setLayout(null);
   
        DatePicker datepick = getDatePicker();
   
        f.add(datepick);
   
        JButton b = new JButton("统计在"+filesrc+" 目录下,修改时间大于控件日期的文件总数");
        b.setBounds(5, 183,380, 30);
        f.add(b);
   
        b.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            	counter=0;
            	filesum=0;
            	String filetime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(datepick.getValue());
            	
                System.out.println("控件日期为:"+filetime);
                System.out.println("要搜索的文件路径为:"+filesrc);
                search(new File(filesrc),filetime);
                JOptionPane.showMessageDialog(f, "总文件数量为:"+filesum+"\n满足条件的文件总数为:"+counter);
            }
        });
   
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   
        f.setVisible(true);
    }
	
	public static void search(File folder,String filetime) {
        File[] fs=folder.listFiles();
        
        for(File f:fs) {
            if(f.isDirectory()) {
                search(f,filetime);
            }else {
                try(FileReader fis=new FileReader(f);BufferedReader br=new BufferedReader(fis)){
                	String modifiedtime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(f.lastModified()));
                	if(modifiedtime.compareTo(filetime)>0)  counter++;
                	filesum++;
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
 
    private static DatePicker getDatePicker() {
        final DatePicker datepick;
        // 格式
        String DefaultFormat = "yyyy-MM-dd HH:mm:ss";
        // 当前时间
        Date date = new Date();
        // 字体
        Font font = new Font("Times New Roman",Font.BOLD, 16);
   
        Dimension dimension = new Dimension(200,30);
   
        int[] hilightDays = { 1, 3, 5, 7 };
   
        //int[] disabledDays = { 4, 6, 5, 9 };
   
        datepick = new DatePicker(date, DefaultFormat, font, dimension);
   
        //datepick.setLocation(100, 83);
        datepick.setBounds(105, 83, 177, 24);
        // 设置一个月份中需要高亮显示的日子
        datepick.setHightlightdays(hilightDays, Color.red);
        // 设置一个月份中不需要的日子,呈灰色显示
        //datepick.setDisableddays(disabledDays);
        // 设置国家
        datepick.setLocale(Locale.CHINA);
        // 设置时钟面板可见
        datepick.setTimePanleVisible(true);
        return datepick;
    }
}

							





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-03-25 作业~
逝月



还好
package how;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.util.Date;
import java.util.Locale;
   
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
  
import com.eltima.components.ui.DatePicker;
   
public class Test {
	static int sum=0;
    public static void main(String[] args) {
   
        JFrame f = new JFrame("LoL");
        f.setSize(600, 300);
        f.setLocation(200, 200);
        f.setLayout(null);
   
        final DatePicker datepick;
        datepick = getDatePicker();
   
        f.add(datepick);
   
        JButton b = new JButton("统计在e:/test目录下,修改时间大于控件日期的文件总数");
        b.setBounds(100, 183, 380, 30);
        f.add(b);
   
        b.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            	File ff=new File("E:/test");
            	blFile(ff,datepick);
            	JOptionPane.showMessageDialog(f, "修改时间在此之后的文件总数 :" +sum);
            }
        });
   
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   
        f.setVisible(true);
    }
 
    private static DatePicker getDatePicker() {
        final DatePicker datepick;
        // 格式
        String DefaultFormat = "yyyy-MM-dd HH:mm:ss";
        // 当前时间
        Date date = new Date();
        // 字体
        Font font = new Font("Times New Roman", Font.BOLD, 14);
   
        Dimension dimension = new Dimension(177, 24);
   
        int[] hilightDays = { 1, 3, 5, 7 };
   
        int[] disabledDays = { 4, 6, 5, 9 };
   
        datepick = new DatePicker(date, DefaultFormat, font, dimension);
   
        datepick.setLocation(137, 83);
        datepick.setBounds(137, 83, 177, 24);
        // 设置一个月份中需要高亮显示的日子
        datepick.setHightlightdays(hilightDays, Color.red);
        // 设置一个月份中不需要的日子,呈灰色显示
        datepick.setDisableddays(disabledDays);
        // 设置国家
        datepick.setLocale(Locale.CHINA);
        // 设置时钟面板可见
        datepick.setTimePanleVisible(true);
        return datepick;
    }
    
    public static void blFile(File folder,DatePicker datepick)
    {
    	if(folder.isDirectory())
    	{
    		File[] f=folder.listFiles();
    		for(File f1:f)
    		{
    			if(f1.isDirectory())
    				blFile(f1,datepick);
    			else
    			{
    				long time = f1.lastModified();
    		        long time2 = ((Date) datepick.getValue()).getTime();
    		        if(time>time2)
    		        	sum++;
    			}
    		}
    	}
    	
    }

}

							





回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2019-01-08 为什么统计文件次数出现错误
2018-12-12 交作业
2018-10-28 滚动条为什么不显示出来?
2018-10-06 如何import下载下来的文件呢?
2017-06-05 关于设置可选的最大最小日期




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 中级-图形界面-日期控件 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 1001964108
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: http://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图