Каков рекомендуемый способ сделать числовое TextField в JavaFX? - PullRequest
74 голосов
/ 26 сентября 2011

Мне нужно ограничить ввод в TextField целыми числами. Любой совет?

Ответы [ 22 ]

0 голосов
/ 26 апреля 2016

этот код Сделайте ваш textField принимать только номер

textField.lengthProperty().addListener((observable, oldValue, newValue) -> {
        if(newValue.intValue() > oldValue.intValue()){
            char c = textField.getText().charAt(oldValue.intValue());
            /** Check if the new character is the number or other's */
            if( c > '9' || c < '0'){
                /** if it's not number then just setText to previous one */
                textField.setText(textField.getText().substring(0,textField.getText().length()-1));
            }
        }
    });
0 голосов
/ 12 октября 2011

Мммм. Я столкнулся с этой проблемой несколько недель назад.Поскольку API не предоставляет элемент управления для достижения этого,
вы можете использовать свой собственный.
Я использовал что-то вроде:

public class IntegerBox extends TextBox {
    public-init var value : Integer = 0;
    protected function apply() {
        try {
            value = Integer.parseInt(text);
        } catch (e : NumberFormatException) {}
        text = "{value}";
    }
    override var focused = false on replace {apply()};
    override var action = function () {apply()}
}

Он используется так же, как обычныйTextBox,
, но также имеет атрибут value, в котором хранится введенное целое число.
Когда элемент управления теряет фокус, он проверяет значение и возвращает его (если оно недействительно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...