我使用JSpinner设置时间(小时和分钟,模式为“HH:mm”)。
我按如下方式初始化JSpinner:
JSpinner spinner = new JSpinner();
spinner.setModel(new SpinnerDateModel());
JSpinner.DateEditor timeEditor = new JSpinner.DateEditor(spinner, "HH:mm");
spinner.setEditor(timeEditor);
spinner.setValue(new Date());
当我得到价值时
(Date) spinner.getValue()
不改变值 - 我得到正确的值Tue Mar 14 14:46:41 CET 2017
,但是当我改变一分钟时它将“epoche”日期作为Thu Jan 01 14:45:00 CET 1970
返回。 “Epoche”日期表示时间(小时和分钟)可以,但日期年,月或日是错误的。
如何初始化JSpinner以始终按spinner.getValue()
获取实际日期? - 不是epoche
日期
修改
我找到了解决方案如下
Date spinnerValue = (Date) spinner.getValue();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MMM/dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss");
Date actualDate = sdf2.parse(sdf1.format(new Date()) + " " + sdf.format(spinnerValue), new ParsePosition(0));
......它看起来不太好,我想把它写得更小更聪明。
答案 0 :(得分:0)
设定值和可能值的范围不受约束。
Set step for a DateEditor in a JSpinner
你必须定义微调器的最小值和最大值,因此微调器知道spinner-tick指向的是什么以及进入下一个tick时剩余多少时间。
第一个getValue命令将返回之前设置的Date(),它由您自己初始化。
DateEditor会生成更多值,这个值也必须由您自己初始化。如果不是,您将从此DateEditor获取默认值。