我想用JSpinner组件,设置值为时间,比如显示初始时间为08:30,然后每次用上下箭头,均增加或减少一分钟。怎么实现,可否给出代码,谢谢!解决问题的,加分相送。
我刚写了一个,比较粗糙,基本功能都实现了,你可以参考一下。
import javax.swing.*;
class SpinnerTimeModel extends AbstractSpinnerModel
{
int h=0;
int m=0;
public Object getNextValue()
{
System.out.println("getNexValue ");
m++;
if (m == 60)
{
m=0;
h++;
if (h == 24)
h=0;
}
return h+":"+m;
}
public Object getPreviousValue()
{
System.out.println("getPreValue ");
m--;
if (m == -1)
{
m=59;
h--;
if (h==-1)
{
h=23;
}
}
return h+":"+m;
}
public Object getValue()
{
System.out.println("getValue");
return h+":"+m;
}
public void setValue(Object value)
{
System.out.println("setValue " + value + " " + value.getClass());
if (value == null || !(value instanceof String))
{
System.out.println("not instanceof");
throw new IllegalArgumentException("invalid value");
}
else
{
String val = (String)value;
int separator = val.indexOf(:);
String sHour = val.substring(0, separator);
String sMinute = val.substring(separator+1);
try
{
int hour = Integer.parseInt(sHour);
int minute = Integer.parseInt(sMinute);
if (hour>=0 && hour<24 && minute>=0 && minute<60)
{
h = hour;
m = minute;
fireStateChanged();
}
else
{
System.out.println("not 0~23 or 0~59");
throw new IllegalArgumentException("invalid value");
}
}
catch(NumberFormatException nfe)
{
System.out.println("nfe Exception");
throw new IllegalArgumentException("invalid value");
}
}
}
}