本示例说明如何创建JSpinner允许您选择小时值的。作为微调器模型,我们使用SpinnerDateModel并将日历字段设置为Calendar.HOUR_OF_DAY。
在微调器上正确显示小时值,我们还将微调器的文本字段的格式设置更改为SimpleDateFormatter。
package org.nhooo.example.swing; import javax.swing.*; import javax.swing.text.DefaultFormatterFactory; import javax.swing.text.DateFormatter; import java.awt.*; import java.util.Date; import java.util.Calendar; import java.text.SimpleDateFormat; public class JSpinnerHour extends JFrame { public JSpinnerHour() { initializeUI(); } private void initializeUI() { setSize(200, 200); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setLayout(new BorderLayout()); // 以下微调器模型会将当前日期作为其日期 //值,并将一天中的小时作为日历字段。开始 // 最终可比值具有null值,这意味着它不会 // 具有最小值或最大值。 SpinnerDateModel model = new SpinnerDateModel(new Date(), null, null, Calendar.HOUR_OF_DAY); JSpinner spinner = new JSpinner(model); // 重新调整微调器的显示,使其仅显示小时 // 和分钟信息部分。 JFormattedTextField textField = ((JSpinner.DefaultEditor) spinner.getEditor()).getTextField(); DefaultFormatterFactory dff = (DefaultFormatterFactory) textField.getFormatterFactory(); DateFormatter formatter = (DateFormatter) dff.getDefaultFormatter(); formatter.setFormat(new SimpleDateFormat("hh:mm a")); getContentPane().add(spinner, BorderLayout.NORTH); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new JSpinnerHour().setVisible(true); } }); } }