how2j.cn

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

解压rar如果失败,请用5.21版本或者更高版本的winrar

点击下载 winrar5.21

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


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



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



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

答案-统计文件数量

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

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


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公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2022-08-20 new了两个JXDatePicker,怎么设置第一个只能选当前时期之后的日期,第二个只能选第一个选中的日期之后的日期,并且得到天数
小吉go

new了两个JXDatePicker,怎么设置第一个只能选当前时期之后的日期,第二个只能选第一个选中的日期之后的日期,并且得到天数







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




2021-12-24 练习 - 统计文件数量
起个名




借助时间控件,选中一个时间,然后根据这个时间,统计e:\project 修改时间大于这个时间的文件,一共有多少
加载中
JButton b = new JButton("统计在X:/.../src目录下,修改时间大于控件日期的文件总数");
		b.setBounds(17, 163, 560, 30);
		f.add(b);
		
		b.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				int t = 0;
				File df = new File("X:/.../FJ2B/src");
				JOptionPane.showMessageDialog(f, df.getAbsolutePath() + "文件夹里的文件修改时间大于控件日期的文件总数是:" + FiletoDst(df, datepick, t));
				System.out.println(df.getAbsolutePath() + "文件夹里的文件修改时间大于控件日期的文件总数是:" + FiletoDst(df, datepick, t));
			}
		});

public static int FiletoDst(File destF, DatePicker datepick, int t) {
		String[] s = destF.list();
		File[] dl = new File[s.length];
		for (int i = 0; i < s.length; i++) {
		    dl[i] = new File(destF.getAbsoluteFile() + "/" + s[i]);
			if (dl[i].isFile()) {
				Date d = new Date(dl[i].lastModified());
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" );
				String ss = sdf.format(d);
				String sx = datepick.getText();
				String[] strs = rDate(ss);
				String[] strx = rDate(sx);
				if (Integer.parseInt(strs[0]) > Integer.parseInt(strx[0]))
					t++;
				if (Integer.parseInt(strs[0]) == Integer.parseInt(strx[0])) {
					if (Integer.parseInt(strs[1]) > Integer.parseInt(strx[1]))
						t++;
					if (Integer.parseInt(strs[1]) == Integer.parseInt(strx[1])) {
						if (Integer.parseInt(strs[2]) > Integer.parseInt(strx[2]))
							t++;
						if (Integer.parseInt(strs[2]) == Integer.parseInt(strx[2])) {
							if (Integer.parseInt(strs[3]) > Integer.parseInt(strx[3]))
								t++;
							if (Integer.parseInt(strs[3]) == Integer.parseInt(strx[3])) {
								if (Integer.parseInt(strs[4]) > Integer.parseInt(strx[4]))
									t++;
								if (Integer.parseInt(strs[4]) == Integer.parseInt(strx[4])) {
									if (Integer.parseInt(strs[5]) > Integer.parseInt(strx[5]))
										t++;
									if (Integer.parseInt(strs[5]) == Integer.parseInt(strx[5])) {
										if (Integer.parseInt(strs[6]) > Integer.parseInt(strx[6]))
											t++;
									}
								}
							}
						}
					}
				}
			}
			if (dl[i].isDirectory()) { 
				t = FiletoDst(dl[i], datepick, t);
			}
		}
		return t;
	}
	
	public static String[] rDate(String s) {
		String[] str1 =  new String[2];
		String[] str2 =  new String[3];
		String[] str3 =  new String[3];
		str1 = s.split(" ");
		str2 = str1[0].split("-");
		str3 = str1[1].split(":");
		String[] newStr = new String[str2.length + str3.length];
		for (int m=0; m < str2.length; m++)
			newStr[m] = str2[m];
		for (int n=0; n < str3.length; n++)
			newStr[n + str3.length] = str3[n];
		return newStr;
	}

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, 9, 11 };		
		datepick = new DatePicker(date, DefaultFormat, font, dimension);
		datepick.setLocation(107, 63);
		datepick.setBounds(137, 83, 177, 24);
		datepick.setHightlightdays(hilightDays, Color.ORANGE);
		datepick.setDisableddays(disabledDays);
		datepick.setTimePanleVisible(true);
		return datepick;
	}

							


2 个答案

CharlieLong
答案时间:2023-10-13
M_GX
答案时间:2022-05-19



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





2021-11-17 下载的包应该放在哪个文件下面?
2020-12-05 练习答案,应该还有更好的答案。往指点
2020-08-04 setBounds(int x,int y,int width,int height)


提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 8 条以前的提问,请 点击查看

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

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

上传截图