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 : 答案-统计文件数量   

步骤 1 :

DatePicker

本例使用 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; } }
步骤 2 :

JXDatePicker

本例使用 包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 :

练习-统计文件数量

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

答案-统计文件数量

在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频

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


问答区域    
2018-12-12 交作业
罗克萨斯



控件位置调整还是稀里糊涂的
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Date;
import java.util.Locale;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.eltima.components.ui.DatePicker;

public class Test03_CountByTime {
	// 统计文件数量
	static int count = 0;

	public static void main(String[] args) {
		JFrame f = new JFrame("LOL");
		f.setSize(400, 300);
		f.setLocationRelativeTo(null);
		f.setResizable(false);
		f.setLayout(null);

		JPanel p1 = new JPanel();
		p1.setBounds(0, 50, 400, 25);
		p1.setLayout(new FlowLayout());

		JLabel l1 = new JLabel("时间:");
		l1.setPreferredSize(new Dimension(50, 25));
		DatePicker datepick = new DatePicker(new Date(), "yyyy-MM-dd HH:mm:ss",
				new Font("Times New Roman", Font.BOLD, 14), new Dimension(150, 25));
		datepick.setLocation(100, 50);
		// 设置国家
		datepick.setLocale(Locale.CHINA);
		// 设置时钟面板可见
		datepick.setTimePanleVisible(true);

		p1.add(l1);
		p1.add(datepick);

		JPanel p2 = new JPanel();
		p2.setBounds(0, 120, 400, 50);
		p2.setLayout(new FlowLayout());

		JLabel l2 = new JLabel("目录:");
		l2.setPreferredSize(new Dimension(50, 25));
		JTextField t = new JTextField("");
		t.setPreferredSize(new Dimension(250, 25));

		p2.add(l2);
		p2.add(t);

		JButton b = new JButton("统计所选目录下,修改时间大于控件日期的文件总数");
		b.setBounds(25, 200, 350, 25);

		f.add(p1);
		f.add(p2);
		f.add(b);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);

		b.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				// 初始化查询统计数量
				count = 0;

				Date date = (Date) datepick.getValue();
				String folder = t.getText();
				if (folder.isEmpty()) {
					JOptionPane.showMessageDialog(f, "请输入需要插叙的目录!");
					t.grabFocus();
					return;
				}
				if (!new File(folder).exists()) {
					JOptionPane.showMessageDialog(f, "该目录不存在,请重新输入!");
					t.grabFocus();
					return;
				}
				countAmountOfFiles(date, new File(folder));

				if (count == 0)
					JOptionPane.showMessageDialog(f, "没有符合条件的文件");
				else
					JOptionPane.showMessageDialog(f, "符合条件的文件总数为:" + count);
			}
		});
	}

	// 查询选定目录下大于控件日期的文件数量
	public static void countAmountOfFiles(Date date, File src) {
		long LastTime = date.getTime();
		File[] fs = src.listFiles();
		for (File file : fs) {
			if (file.isFile()) {
				long time = file.lastModified();
				if (time >= LastTime)
					count++;
			}
			if (file.isDirectory())
				countAmountOfFiles(date, file);
		}
		return;
	}
}

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-10-28 滚动条为什么不显示出来?
沐春秋



JTextField 用来配置查询路径 JTextArea 用来显示满足时间条件的文件 列出文件后, 滚动条却不出现? 站长,怎么解决? online = 你
package date_component;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import org.jdesktop.swingx.JXDatePicker;

public class date_practice {
	
	static List<File> result = new ArrayList<>(); 
	
	public  static void main(String[] args) {
		
		Date d = new Date();
		JXDatePicker dp = new JXDatePicker();
			dp.setDate(d);
		JButton b = new JButton("Search_files");
		JPanel p_up = new JPanel();
			p_up.add(dp);
			p_up.add(b);
	
		JLabel  l = new JLabel("Seach_Path");
		JTextField tf = new JTextField("D:\\srcJAVA\\how2j\\how2j");
					tf.setPreferredSize(new Dimension(300,20));
		JPanel p_mid = new JPanel(new FlowLayout());
			p_mid.add(l);
			p_mid.add(tf);
			
		JTextArea ta = new JTextArea();
				ta.setLineWrap(true);
				ta.setEditable(false);
				ta.setVisible(true);
				ta.setPreferredSize(new Dimension(300,380));
				ta.setText("The suitable file whose lasted modify time < the current time will be displayed here..");
		JScrollPane p_down = new JScrollPane(ta);
				p_down.setPreferredSize(new Dimension(400,400));

		JFrame f = new JFrame("Test_data_component");
			f.setSize(500,500);
			f.setVisible(true);
			f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			f.setLocation(200,200);
			f.setLayout(new BorderLayout());
			f.add(p_up,BorderLayout.NORTH);
			f.add(p_mid,BorderLayout.CENTER);
			f.add(p_down,BorderLayout.SOUTH);
			
			
		b.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e){
				//dp.getDate();
				File ff = new File(tf.getText());
				getall(ff);
				ta.setText("");
				for(int j = 0;j<result.size();j++) {
					long tmp_time = result.get(j).lastModified();
					if(tmp_time < dp.getDate().getTime() ) {
						ta.append(result.get(j).getAbsolutePath() + "    :    " + new Date(tmp_time).toString() +"  \r\n");
					}
				}
			}
		});	
	}
	
	public static void getall(File ff) {
		if(ff.isFile()) {
			result.add(ff);
		}
		if(ff.isDirectory()) {
			File[] tmp = ff.listFiles();
			for(File i: tmp) {
				getall(i);
			}
		}
	}
}

							






答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到





2018-10-06 如何import下载下来的文件呢?
2017-06-05 关于设置可选的最大最小日期




提问之前请登陆
关于 JAVA 中级-图形界面-日期控件 的提问

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

上传截图