如何设置jSpinner的默认值?

时间:2015-05-07 06:08:40

标签: java netbeans jspinner

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

我的问题是我想将我的jSpinner设置为" 00:00"当窗口被激活时,一旦点击了jSpinner,我希望将值更改为" HH:MM"格式。而我自己也做不到,jSpinner的价值并没有改变它仍然是" 00:00"。 请帮我。提前谢谢。

1 个答案:

答案 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 ListenerHow 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);