2014-06-27 25 views
0

我想爲定製日期編輯JSpinner。我想要的格式是1HH:mm:ss a1,我已經得到了這部分。將JSpinner與JFormattedTextField結合使用

我也想在JFormattedTextField一些功能添加:

  1. setplaceHolderCharacter('_')

    例如,時間是九時23分45秒,當用戶刪除09,

    __:23: 45在屏幕上顯示。

  2. 輸入限制

    例如,時間是9時23分45秒,當用戶刪除09,

    並嘗試輸入任何內容,他只能輸入數字,不含字母是允許的。

任何幫助,將不勝感激!

回答

0

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()); 
} 

} 
+0

謝謝,但我想用戶無法輸入任何字母,只有數字。你可以擴展更多關於如何將JFormattedTextfield與它聯繫起來嗎?日期編輯器只具有部分功能 – user2628641