Я хотел бы иметь возможность вводить время в текстовом поле 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.
Спасибо за любую помощь.