0
A
回答
0
的工作,這是我在我的DatePicker的TextField對象所使用的孤子:允許插入任何類型的文本在文本框的DatePicker的對象.. 我覺得這解決方案也可以遏制你。 在這個例子中,我在DatePicker和TextField對象上做了這個。
MyControllerClass.java
@Fxml
private DatePicker datePik;
@Fxml
private TextField textF;
@Override
public void initialize(URL url, ResourceBundle rb) {
String pattern = "dd-MM-yyyy";
datePik.setPromptText(pattern.toLowerCase());
datePik.getEditor().focusedProperty().addListener(new ChangeListener<Boolean>()//focus on the TextField object of the DatePicker
{
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue){
if (newPropertyValue == false){
try {
SimpleDateFormat sdf = new SimpleDateFormat(datePik.getEditor().getText());
sdf.setLenient(false);
//if not valid, it will throw ParseException
Date date = sdf.parse(datePik.getEditor().getText());
//System.out.println(date);
} catch (Exception e) {
e.printStackTrace();
datePik.getEditor().setText("");
}
}
};
});
textF.focusedProperty().addListener(new ChangeListener<Boolean>()//focus on the TextField object
{
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue){
if (newPropertyValue == false){
try {
SimpleDateFormat sdf = new SimpleDateFormat(textF.getText());
sdf.setLenient(false);
//if not valid, it will throw ParseException
Date date = sdf.parse(textF.getText());
//System.out.println(date);
} catch (Exception e) {
e.printStackTrace();
textF.setText("");
}
}
};
});
}
您可以使用對象的SimpleDateFormat爲了檢查一個適當的時間太長http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 再見
1
這個答案是很容易理解和適應任何文本模式。實現的圖案爲dd.mm.yyyy
import java.awt.Toolkit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javafx.geometry.Side;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.control.TextField;
public class DateTextField extends TextField
{
Pattern patt1 = Pattern.compile("[0-3]");
Pattern patt2 = Pattern.compile("[0-3][0-9]");
Pattern patt3 = Pattern.compile("[0-3][0-9][.]");
Pattern patt4 = Pattern.compile("[0-3][0-9][.][0-1]");
Pattern patt5 = Pattern.compile("[0-3][0-9][.][0-1][0-9]");
Pattern patt6 = Pattern.compile("[0-3][0-9][.][0-1][0-9][.]");
Pattern patt7 = Pattern.compile("[0-3][0-9][.][0-1][0-9][.][1-2]");
Pattern patt8 = Pattern.compile("[0-3][0-9][.][0-1][0-9][.][1-2][0-9]");
Pattern patt9 = Pattern.compile("[0-3][0-9][.][0-1][0-9][.][1-2][0-9][0-9]");
Pattern patt10 = Pattern.compile("[0-3][0-9][.][0-1][0-9][.][1-2][0-9][0-9][0-9]");
public DateTextField()
{
super();
}
public void replaceText(int start, int end, String text)
{
String text2 = this.getText()+text;
if(compare(text2) || start != end)
{
super.replaceText(start, end, text);
}
else
{
Toolkit.getDefaultToolkit().beep();
zeige();
}
}
public void replaceSelection(String text)
{
String text2 = this.getText()+text;
if(compare(text2))
{
super.replaceSelection(text);
}
else
{
Toolkit.getDefaultToolkit().beep();
zeige();
}
}
private boolean compare(String text)
{
Matcher match = patt1.matcher(text);
if(match.matches()) return true;
match = patt2.matcher(text);
if(match.matches()) return true;
match = patt3.matcher(text);
if(match.matches()) return true;
match = patt4.matcher(text);
if(match.matches()) return true;
match = patt5.matcher(text);
if(match.matches()) return true;
match = patt6.matcher(text);
if(match.matches()) return true;
match = patt7.matcher(text);
if(match.matches()) return true;
match = patt8.matcher(text);
if(match.matches()) return true;
match = patt9.matcher(text);
if(match.matches()) return true;
match = patt10.matcher(text);
if(match.matches()) return true;
return false;
}
private void zeige()
{
final ContextMenu menu = new ContextMenu();
menu.getItems().add(new MenuItem("dd.mm.yyyy"));
menu.show(this, Side.BOTTOM, 0, 0);
}
}
相關問題
- 1. 限制文本輸入字段中的字符集
- 2. 如何在通過語音輸入文本時限制文本字段中的文本
- 3. HTML5 - 多輸入字段:文件限制?
- 4. 如何過濾或限制在PyGTK文本輸入字段中輸入的文本?
- 5. 過濾從文本字段中輸入
- 6. 通過JCheckBox更改文本字段輸入的字體顏色
- 7. JavaScript限制文本輸入字符
- 8. 文本輸入字符限制
- 9. 輸入字段,通過DOM
- 10. 通過ng-pattern在輸入字段中限制少量特殊字符
- 11. HTML文本輸入限制
- 12. 表單輸入文本字段中允許的字符數限制
- 13. 在輸入時限制HTML輸入字段中的值?
- 14. 轉義用戶通過文本字段輸入的&符號?
- 15. 輸入文字的字符數限制
- 16. 通過輸入字段更新按鈕文本
- 17. Javascript:通過文本字段輸入計算餘額並提前
- 18. 通過jQuery將文本添加到輸入字段
- 19. 輸入文件字段輸入文本字段
- 20. d3.js中的文本輸入字段
- 21. iMacros中的文本輸入字段
- 22. 輸入字段中的默認文本
- 23. 在AS3中輸入文本字段中輸入按鍵輸入
- 24. 如何通過在字段的開頭提供單個空格來在文本字段中輸入文本?
- 25. 通過文本字段
- 26. 如何限制文本輸入中的輸入號碼
- 27. 如何限制輸入文本在angular2中的數字範圍?
- 28. 限制在文本框中允許的字符(輸入金額)
- 29. 將文本框輸入限制在C#中的數字#
- 30. 將文本框/文本框中的輸入限制爲僅在J2me中使用字母數字輸入
查閱以下Oracle頁[的DatePicker] [1] [1]:http://stackoverflow.com/questions/22940371/javafx -8-datepicker-features – Inge 2015-02-09 05:29:09
如果你可以使用JDK 8 update 40(這是在編寫本書時的早期版本,但由於在大約一個月內在GA),它有一個['TextFormatter'](http ://download.java.net/jdk9/jfxdocs/index.html?javafx/scene/control/TextFormatter.html)就是專門爲這個用例設計的。 – 2015-02-09 12:22:26