我遇到了Java JSpinner的问题。 如果我不修改微调器中显示的值,一切正常。 但是,如果我使用箭头更改值(日期),我的程序将返回给我1970年1月1日的日期。
以下是代码片段:
package main;
import java.awt.FlowLayout;
import java.util.Calendar;
import java.util.Date;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class GUI {
JSpinner mySpinner;
public void createGUI(){
JFrame frame=new JFrame();
JPanel panel=new JPanel(new FlowLayout());
panel.setSize(300,100);
mySpinner=new JSpinner();
mySpinner.setModel(new SpinnerDateModel(new Date(), null, null, Calendar.MINUTE));
mySpinner.setEditor(new JSpinner.DateEditor(mySpinner, "HH:mm"));
mySpinner.setBounds(0, 0, 71, 28);
final JLabel myLabel=new JLabel();
panel.add(myLabel);
mySpinner.addChangeListener(new ChangeListener(){
@Override
public void stateChanged(ChangeEvent e) {
System.out.println("JSpinner: "+mySpinner.getValue());
}
});
frame.add(panel);
panel.add(mySpinner);
frame.setVisible(true);
}
}
这是主要的:
public static void main(String[] args) {
// TODO Auto-generated method stub
GUI myGUI=new GUI();
myGUI.createGUI();
}
这就是控制台打印的内容:
JSpinner: Thu Jan 01 23:03:00 CET 1970
JSpinner: Thu Jan 01 22:03:00 CET 1970
答案 0 :(得分:-1)
您需要将今天的日期设置为DateEditor
。请尝试以下代码段。
Date today = new Date();
JSpinner s = new JSpinner(new SpinnerDateModel(today, null, null,
Calendar.MINUTE));
JSpinner.DateEditor de = new JSpinner.DateEditor(s, "HH:mm");
s.setEditor(de);
希望它有所帮助。