如何从我的JSpinner获取日期?

时间:2015-01-27 02:33:16

标签: java swing date jspinner

这是Spinner的代码

Hini = new javax.swing.JSpinner();
Date date = new Date();
SpinnerDateModel sm = new SpinnerDateModel(date, null, null, Calendar.MINUTE);
JSpinner Hini = new JSpinner(sm);
JSpinner.DateEditor de = new JSpinner.DateEditor(Hini, "hh:mm a");
de.getTextField().setEditable( true );
Hini.setEditor(de);

这就是我想要它获取值的方式,但它总是显示“00:00”

    `SimpleDateFormat formater = new SimpleDateFormat("HH/mm");
     String spinnerValue = formater.format(Hini.getValue());
     System.out.println(spinnerValue);`

我也试过这个,但它总是显示实际时间,而不是我选择的时间

Hini = new JSpinner(sm);
de = new JSpinner.DateEditor(Hini, "hh:mm a");
de.getTextField().setEditable( false );
Hini.setEditor(de);
System.out.println("Spinner:      "+de.getFormat().format(Hini.getValue()));

1 个答案:

答案 0 :(得分:2)

您似乎正在创建JSpinner

的两个实例
// Instance(?) field here...
Hini = new javax.swing.JSpinner();
Date date = new Date();
SpinnerDateModel sm = new SpinnerDateModel(date, null, null, Calendar.MINUTE);
// Local field here
JSpinner Hini = new JSpinner(sm);
JSpinner.DateEditor de = new JSpinner.DateEditor(Hini, "hh:mm a");
de.getTextField().setEditable( true );
Hini.setEditor(de);

所以我只能猜测本地字段是添加到UI的内容并且实例字段被忽略,这意味着用户输入字段的任何内容都没有设置为实例字段。

删除第二个字段的创建,并将其替换为Hini.setModel(sm);

不是直接从JSpinner格式化值,而应该只是获取Date值的引用,并且只在您真正需要时才进行格式化。这为您提供了更灵活的解决方案