我使用jSpinner以格式设置时间" HH:MM"它工作正常。
我的问题是我想将我的jSpinner设置为" 00:00"当窗口被激活时,一旦点击了jSpinner,我希望将值更改为" HH:MM"格式。而我自己也做不到,jSpinner的价值并没有改变它仍然是" 00:00"。 请帮我。提前谢谢。
答案 0 :(得分:3)
假设您使用的是SpinnerDateModel
,则JSpinner
管理的值为java.util.Date
。您需要创建一个Date
实例,将其小时/分钟字段设置为午夜
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
Date date = cal.getTime();
spinner.setValue(date);
要从JSpinner
获取格式,您可以使用SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String value = sdf.format(spinner.getValue());
但如何设置" 00:00"当窗口被激活时
如果没有更多信息,我建议使用某种WindowListener
,假设您每次都没有创建窗口。
查看How to Write a Focus Listener和How to Write Window Listeners
点击后更改了值?
这有点不清楚,但您应该在需要知道它是什么时从JSpinner
获取值,并根据您的需要进行格式化。 JSpinner
应该在更新值时自动格式化值(根据您的设置)。
话虽如此,我确实需要制作"开始" (或最低值)null
当我设置模型时,似乎允许微调器更新时间值
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
Date startTime = cal.getTime();
cal.set(Calendar.HOUR, 23);
cal.set(Calendar.MINUTE, 59);
Date endTime = cal.getTime();
System.out.println(startTime);
System.out.println(endTime);
// The Calendar field seems to get ignored and overriden
// by the UI delegate based on what part of the field
// the cursor is current on (hour or minute)
SpinnerDateModel model = new SpinnerDateModel(startTime, null, endTime, Calendar.MINUTE);
JSpinner spinner = new JSpinner(model);
spinner.setEditor(new JSpinner.DateEditor(spinner, "HH:mm"));
spinner.setValue(startTime);