閱讀後this article和this question我試圖做兩個組合:一個JFormattedTextField總是在正確的位置顯示斜槓並自動分析Date對象。帶MaskFormatter和DateFormat的JFormattedTextField
我想出的代碼如下:
private DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
textField_DaRiassuntoIncassi = new JFormattedTextField(df);
textField_ARiassuntoIncassi = new JFormattedTextField(df);
textField_DaScadenze = new JFormattedTextField(df);
textField_AScadenze = new JFormattedTextField(df);
textField_DaRiassuntoIncassi.setColumns(10);
textField_ARiassuntoIncassi .setColumns(10);
textField_DaScadenze .setColumns(10);
textField_AScadenze .setColumns(10);
try
{
MaskFormatter dateMask = new MaskFormatter("##/##/####");
dateMask.install(textField_DaRiassuntoIncassi);
dateMask.install(textField_ARiassuntoIncassi);
dateMask.install(textField_DaScadenze);
dateMask.install(textField_AScadenze);
}
catch(ParseException ex)
{
ex.printStackTrace();
}
的問題是,當我在文本框單擊輸入值,當我輸入我鍵入兩條斜線移動,而不是我希望它們保持固定(就像按下鍵盤上的「插入」鍵時)。 如果我把MaskFormatter放在問題消失的構造函數中,但我可以在文本字段中輸入任何我想要的數字,例如「99/00/9874」,並且組件告訴我這是一個好值,因爲我沒有知道在哪裏插入SimpleDateFormat。
我最後的手段是將MaskFormatter放入JFormattedTextField構造函數中,使用getText()方法獲取文本,嘗試使用DateFormat解析日期,並在發生錯誤時執行某些操作,但我認爲有一個巧妙的方法去做這個。 我嘗試使用方法
textField_AScadenze.setFormatterFactory(new DefaultFormatterFactory(new DateFormatter(new SimpleDateFormat("dd/MM/yyyy"))));
,但只要我不插入任何項目,點擊出斜線都不見了。 請幫忙。 謝謝