【发布时间】:2016-02-10 06:21:41
【问题描述】:
我希望能够以 hh:mm:ss 格式在 javafx 文本字段中输入时间。我将如何格式化文本字段?我已经得到了正则表达式方法,所以它只接受数字作为输入:
public void format(TextField t, String regex){
TextFormatter<String> formatter = new TextFormatter<String>( change -> {
change.setText(change.getText().replaceAll(regex, ""));
return change;
});
t.setTextFormatter(formatter);
}
我还有一种方法可以限制文本字段中允许的字符数量:
public void limitLength(int maxLength, TextField t){
t.lengthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable,
Number oldValue, Number newValue) {
if (newValue.intValue() > oldValue.intValue()) {
// Check if the new character is greater than LIMIT
if (t.getText().length() >= maxLength) {
t.setText(t.getText().substring(0, maxLength));
}
}
}
});
}
但是,这些都不能帮助我获得我想要的时间格式。理想的情况是初始文本为 00:00:00,用户只能编辑数字,不能触摸冒号。如果我能够确保每个冒号之间有 2 位数字,那就太棒了,即用户应该无法在数字之间移动,例如 0:000:00。
感谢您的帮助。
【问题讨论】:
标签: regex javafx textfield text-formatting