如何设置jSpinner的默认值?

我正在使用jSpinner以格式“HH:MM”设置时间,它工作正常。

我的问题是我想在激活窗口时将我的jSpinner设置为“00:00”,并且一旦点击了jSpinner,我希望将值更改为“HH:MM”格式。 我不能自己做,jSpinner值不会改变它仍然是“00:00”。 请帮帮我。 先谢谢你。

假设您使用的是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 ,假设您不是每次都创建窗口。

看看如何编写焦点监听器以及如何编写窗口监听器

点击后改变了价值?

这有点不清楚,但是当你需要知道它是什么时,你应该从JSpinner获得价值,并根据你的需要进行格式化。 更新值时, JSpinner应自动(根据您的设置)设置值的格式。

话虽如此,我确实需要在设置模型时使“start”(或最低值)为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);