JSpinner:当我使用方法“getValue()”时,它返回1974年1月1日的日期

时间:2014-04-13 16:38:14

标签: java swing jspinner

我遇到了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

1 个答案:

答案 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);

希望它有所帮助。