Java 自定义spinnerdatemodel不执行任何操作
覆盖了getPrevious()和getNext()的自定义spinnerdatemodel没有执行任何操作。我做错了什么 这是我的密码。这在我看来是正确的;所以,是的,任何帮助都将不胜感激。谢谢Java 自定义spinnerdatemodel不执行任何操作,java,swing,Java,Swing,覆盖了getPrevious()和getNext()的自定义spinnerdatemodel没有执行任何操作。我做错了什么 这是我的密码。这在我看来是正确的;所以,是的,任何帮助都将不胜感激。谢谢 /** * Custom spinner model for the times (hhmm) */ class SpinnerTimeModel extends SpinnerDateModel { /** * Constructor */ public S
/**
* Custom spinner model for the times (hhmm)
*/
class SpinnerTimeModel extends SpinnerDateModel {
/**
* Constructor
*/
public SpinnerTimeModel() {
cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
setValue(cal.getTime());
setStart(cal.getTime());
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
setEnd(cal.getTime());
}
/**
* Returns a time 30 minutes prior to the current time
*
* @return a time 30 minutes prior to the current time
*/
@Override
public Object getPreviousValue() {
Calendar previous = Calendar.getInstance();
previous.setTime(getDate());
previous.add(Calendar.MINUTE, -30);
return previous.getTime();
}
/**
* Returns a time 30 minutes after the current time
*
* @return a time 30 minutes after the current time
*/
@Override
public Object getNextValue() {
Calendar next = Calendar.getInstance();
next.setTime(getDate());
next.add(Calendar.MINUTE, 30);
return next.getTime();
}
private Calendar cal;
}
如果将JSpinner编辑器类型设置为DateEditor,那么现有代码将正常工作。代码已注释
public class spinnerdemo {
public void show() {
JFrame f = new JFrame("JSpinner Demo");
f.setSize(500, 100);
f.setLayout(new GridLayout(1, 1));
JSpinner ctrlSpin = new JSpinner();
ctrlSpin.addChangeListener(new javax.swing.event.ChangeListener() {
@Override
public void stateChanged(javax.swing.event.ChangeEvent evt) {
System.out.println("" + ctrlSpin.getValue());
}
});
ctrlSpin.setModel(new SpinnerTimeModel());
//set the DateEditor
ctrlSpin.setEditor(new JSpinner.DateEditor(ctrlSpin, "dd/MM/yyyy HH:mm:ss.SS"));
f.add(ctrlSpin);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
public static void main(String[] args) {
new spinnerdemo().show();
}
}
你怎么用这个?给点背景好吧,让我更具体一点。当我单击jspinner的上/下箭头时,编辑器的值不会改变。下面是我设置/添加微调器、编辑器等的代码:startTimeSpinner.setModel(new SpinnerTimeModel());setModel(新的SpinnerTimeModel());setEditor(新的JSpinner.DateEditor(startTimeSpinner,“HHmm”);setEditor(新的JSpinner.DateEditor(endTimeSpinner,“HHmm”);