我认为我的问题有一个简单的解决方案,但我是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(例如)。
答案 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()
未通过
进行测试