将SpinnerDateModel格式化的值传递给String

时间:2014-09-01 09:13:23

标签: java swing jspinner

我认为我的问题有一个简单的解决方案,但我是Java编程的新手,所以我自己无法解决它,我有这个jSpinner,我用它作为时间选择器。我需要的是将这个jSpinner的值传递给一个字符串。请帮我这样做。

非常感谢您的帮助!

这是Spinner的代码

Spintimetoplay = new javax.swing.JSpinner();
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 24);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);

SpinnerDateModel model = new SpinnerDateModel();
model.setValue(calendar.getTime());

JSpinner Spintimetoplay = new JSpinner(model);

JSpinner.DateEditor editor = new JSpinner.DateEditor(Spintimetoplay, "HH:mm");
DateFormatter formatter = (DateFormatter)editor.getTextField().getFormatter();
formatter.setAllowsInvalid(false);
formatter.setOverwriteMode(true);

Spintimetoplay.setEditor(editor);

每当我使用.getValue()作为一些建议说它给我0值而不是00:00(例如)。

2 个答案:

答案 0 :(得分:1)

  

我需要的是将此jSpinner的值传递给字符串。

因此,请获取微调器的值(因为您使用SpinnerDateModel它将返回Date个对象)并使用SimpleDateFormat来获取所需的字符串:

Date value = (Date)spinTimeToPlay.getValue(); // Note code convention here
String formattedValue = new SimpleDateFormat("HH:mm").format(value);

题外话

请查看Java Code Conventions并坚持下去:

  

"除变量外,所有实例,类和类常量都是小写的第一个字母。内部单词以大写字母开头。"


修改

根据您的评论:

  

我收到此错误java.lang.ClassCastException: java.lang.Integer cannot be cast to java.util.Date

我认为您的代码中有两个Spintimetoplay个变量:

Spintimetoplay = new javax.swing.JSpinner(); // probably a class member
...
SpinnerDateModel model = new SpinnerDateModel();
...
JSpinner Spintimetoplay = new JSpinner(model); // local variable here

在这里,您将右SpinnerDateModel设置为局部变量,而不是右Spintimetoplay类成员。因此,当您尝试返回此类成员中设置的值时,其模型不是SpinnerDateModel而是SpinnerNumberModel,因此它返回一个导致ClassCastException的整数值。你应该做这个改变:

// Spintimetoplay = new javax.swing.JSpinner(); remove this line
...
SpinnerDateModel model = new SpinnerDateModel();
...
Spintimetoplay = new JSpinner(model); // initialize your class member here

答案 1 :(得分:0)

您可以尝试通过

访问该文本
editor.getTextField().getText()

未通过

进行测试