如何使用Event ChangeListener()从JSpinner读取时间并将其打印在控制台上?

问题描述 投票:0回答:1

我需要帮助,使用事件ChangeListener从JSpinner读取时间。 问题是当我一步旋转时,时间打印了两次。 当我在主程序中运行以下代码时,输​​出为00:00、01:00进行单次旋转。 您能否帮助我知道原因,以及如何解决在向上或向下旋转时仅打印一个值的问题?谢谢..请参阅示例

public class SpinnerTest {

private JFrame frame;

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                SpinnerTest window = new SpinnerTest();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public SpinnerTest() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    JPanel groupLayoutPanel = new JPanel();

    JSpinner spinner = new JSpinner(new SpinnerDateModel(new Date(1591563600775L), null, null, Calendar.HOUR_OF_DAY));
    spinner.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {
            JSpinner spinner = (JSpinner)e.getSource();
            Date sdate= (Date)spinner.getValue();
            String pattern = "HH:mm";
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
            String date = simpleDateFormat.format(sdate);
            System.out.println(date);

        }
    });
    JSpinner.DateEditor de= new JSpinner.DateEditor(spinner,"HH:mm");
    spinner.setEditor(de);

    GroupLayout grouplayout= new GroupLayout(groupLayoutPanel);
    grouplayout.setHorizontalGroup(
        grouplayout.createParallelGroup(Alignment.LEADING)
            .addGroup(grouplayout.createSequentialGroup()
                .addGap(83)
                .addComponent(spinner, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap(321, Short.MAX_VALUE))
    );
    grouplayout.setVerticalGroup(
        grouplayout.createParallelGroup(Alignment.LEADING)
            .addGroup(grouplayout.createSequentialGroup()
                .addGap(25)
                .addComponent(spinner, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                .addContainerGap(216, Short.MAX_VALUE))
    );
    groupLayoutPanel.setLayout(grouplayout);
    frame = new JFrame();
    frame.setContentPane(groupLayoutPanel);
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}

java swing jspinner
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.