Связывание Java JTextField -> проблема java.lang.Integer - PullRequest
3 голосов
/ 04 марта 2009

У меня есть текстовое поле, которое связано с переменной Integer, поэтому, когда пользователь вводит число в это поле, механизм связывания автоматически преобразует текст в целое число и устанавливает это значение в переменную. Проблема заключается в том, что, поскольку пользователь вводит текст в текстовое поле, этот механизм привязки преобразует только значения, и если пользователь вводит в него несколько букв, привязка не активируется, поскольку в текстовом поле нет допустимого значения. Что бы мне понадобилось в такой ситуации, привязка должна инициировать изменение с нулевым значением, поэтому у меня есть ноль в моей целочисленной переменной.

Таким образом, если пользователь оставил бы это поле пустым или что-то, что не является числом, привязка должна будет инициировать распространение нулевого значения; не игнорировать событие ... Как я могу сделать это без программирования событий в текстовом поле?

Способна ли Java-привязка изменить поведение по умолчанию?

Ответы [ 3 ]

1 голос
/ 04 марта 2009

Что вам нужно, это JFormattedTextField и NumberFormat .

1 голос
/ 04 марта 2009

Поддержка Swing для ограниченного ввода текста ужасна. JFormattedTextField даст вам крайне несчастный пользовательский опыт. Как и в большинстве интересных работ по Swing, игнорируйте JComponent и переходите к модели. В этом случае Document, в частности DocumentFilter.

Как оказалось, у меня есть простое приложение Swing, которое использует текстовые поля, ограниченные целыми числами, которые я подготовил ранее. Описание. Источник (в частности, см. createNumberDocument).

0 голосов
/ 04 марта 2009

Помимо изменения поведения механизма привязки, вы можете поместить Formatter в TextField, который принимает только числа. Для этого вам нужно расширить javax.swing.text.DefaultFormatter. И тогда вы бы использовали JFormattedTextField вместо обычного JTextField.

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

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