【发布时间】:2020-09-27 04:34:18
【问题描述】:
我需要帮助来使用事件 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);
}
}
【问题讨论】:
-
我从代码中得到的输出是 00:00 和 01:00 一次旋转
-
随便 .. MRE / SSCCE 何时添加到问题中?
-
我添加了一个例子。我希望它会有所帮助
-
如果它有助于解决问题,请accept an answer。