【发布时间】:2014-01-06 04:43:44
【问题描述】:
我正在使用JSpinner 选择 HH:MM:SS 格式的时间。每当
我打开 GUI,微调器自动设置为当前系统时间,
我需要说的是,例如,如果我在给微调器一些值之后单击保存,以及何时
我再次打开它应该显示旧值。
我尝试了以下代码,但它不起作用,
if(Stime != null){
Date time = new SimpleDateFormat("HHMMSS", Locale.ENGLISH).parse(Stime);
StarttimeSpinner.setValue(time);
}
其中 Stime 是先前以 HHMMSS 格式保存的时间,例如(142030)
正确吗?或者我该怎么做?请帮忙!
编辑:
SpinnerModel Startmodel = new SpinnerDateModel();
StarttimeSpinner = new JSpinner();
StarttimeSpinner = new JSpinner(Startmodel);
JComponent editor = new JSpinner.DateEditor(StarttimeSpinner, "HH:mm:ss");
StarttimeSpinner.setEditor(editor);
try{
if(!(Stime.equalsIgnoreCase("")))
{
Date time = new SimpleDateFormat("HH:mm:ss", Locale.ENGLISH).parse(Stime);
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateString = formatter.format(time);
StarttimeSpinner.setModel(new SpinnerListModel(new String[]{dateString}));
}
}
}catch(Exception ie){
System.err.println("in time panel");
}
时间格式是 HHmmss,它是一个字符串。在 dateString(Variable) 中,我得到了 HH:mm:ss 格式的前一个值,但它没有在 Spinner 中设置,而是显示系统时间。
编辑 2: 我找到了一个解决方案,但有一个错误,
如果我的代码是这样的(1),
StarttimeSpinner = new JSpinner();
SpinnerModel Startmodel = new SpinnerDateModel();
StarttimeSpinner = new JSpinner(Startmodel);
JComponent editor = new JSpinner.DateEditor(StarttimeSpinner, "HH:mm:ss");
StarttimeSpinner.setEditor(editor);
下面的代码可以正常工作,
Date starttime = new Date();
starttime = (Date)StarttimeSpinner.getValue();
如果我像下面(2)那样更改代码,
Date time = new SimpleDateFormat("HHmmss", Locale.ENGLISH).parse(Stime);
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateString = formatter.format(time);
StarttimeSpinner.setModel(new SpinnerListModel(new String[]{dateString}));
其中时间是(例如)120011
下面的代码不能正常工作,
Date starttime = new Date();
starttime = (Date)StarttimeSpinner.getValue();
并在 get value 语句中将异常作为 java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date 抛出。
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发帖 SSCCE。 2)请学习常用的Java naming conventions(特别是用于名称的大小写)类,方法和属性名称并一致地使用它们。
-
当你说保存时,你的意思是你关闭了整个程序,当你再次打开它时,你想显示那个时间吗?如果是这种情况,您需要将其保存到文本文件或类似文件中。并在打开程序时加载文件
-
那么,有什么问题吗?
-
@peeskillet 不,我并没有关闭整个程序,只是关闭了 spinner 的 GUI。我在 Stime 变量中有以前的值,但我不知道如何设置它。
-
@MadProgrammer 我没有看到系统时间再次设置的任何变化
标签: java swing date simpledateformat jspinner