Как сделать так, чтобы текст не вводил больше цифры, чем «х»? - PullRequest
2 голосов
/ 17 мая 2011

Мой вопрос:

Я хочу, чтобы в текстовом поле Eclipse RCP вводились только цифры для ввода, и требовалось, чтобы оно допускало только до 'x' (скажем, x= 5) символов.
Как я могу выполнить это в RCP?

Я пробовал такой код:

txtInput.addListener(SWT.Verify, new DecimalText(
                txtInsuranceValue, 8, 1000.00));

, где txtInputis - текстовое поле.Но этот слушатель потерпел неудачу, когда я сделал повторный ввод в это поле во время выполнения.

Любые альтернативы, пожалуйста?

Ответы [ 2 ]

4 голосов
/ 17 мая 2011

Это установит максимальное количество символов в вашем текстовом элементе управления на пять и позволит вводить только цифры:

    txtInput.setTextLimit(5);

    txtInput.addVerifyListener(new VerifyListener() {
        public void verifyText(VerifyEvent event) {
            // Assume we allow it
            event.doit = true;

            String text = event.text;
            char[] chars = text.toCharArray();

            //Don't allow if text contains non-digit characters
            for (int i = 0; i < chars.length; i++) {
                if (!Character.isDigit(chars[i])) {
                    event.doit = false;
                    break;
                }
            }
        }
    });

РЕДАКТИРОВАТЬ: Я изменил свой ответ, чтобы позволить пользователю также установить текст с "setText (String string)", в то же время запрещая нецифровые символы.

0 голосов
/ 17 мая 2011

Как правило, такие решения, как добавление verifyListeners / focusListeners, не являются полными и не будут работать во всех ситуациях.Например, что происходит, когда пользователь копирует и вставляет некоторый текст в это текстовое поле?

Если все, что вам нужно, это получить числовые входные данные от пользователя, вам следует использовать виджет Spinner вместо виджета Text.Вы можете легко установить минимальные и максимальные пределы для Spinner.

См. фрагменты для дальнейшего использования.

...