JFormattedTextField可能有更好的解決方案,但是這裏有一個內置的java類。此外,這不符合您的要求用'_'替換已刪除的數字。但您可以選擇秒數,然後旋轉秒數而不是小時數。也只有幾乎一個輸入限制。你可以寫信,但沒有ChangeEvent會被解僱。額外獎勵:您不必考慮在60分鐘後什麼時候改變到下一個小時或什麼時候,它的工作原理,當然,日期可以具有的所有東西(因此也可以旋轉幾個月或幾年)
public class HourSpinner implements ChangeListener {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new HourSpinner();
}
});
}
public HourSpinner() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(100, 70);
frame.setLocationRelativeTo(null);
Container contentPane = frame.getContentPane();
JSpinner dateSpinner = new JSpinner(new SpinnerDateModel(new Date(), null, null, Calendar.HOUR_OF_DAY));
DateEditor editor = new JSpinner.DateEditor(dateSpinner, "HH:mm:ss");
dateSpinner.setEditor(editor);
dateSpinner.addChangeListener(this);
contentPane.add(dateSpinner);
frame.setVisible(true);
}
@Override
public void stateChanged(ChangeEvent e) {
JSpinner source = (JSpinner) e.getSource();
System.out.println(source.getValue());
}
}
謝謝,但我想用戶無法輸入任何字母,只有數字。你可以擴展更多關於如何將JFormattedTextfield與它聯繫起來嗎?日期編輯器只具有部分功能 – user2628641