2015-05-19 2 views
1

Может ли кто-нибудь помочь мне с валидацией для JTextField, которая может содержать до 3 цифр до десятичной и до двух цифр после десятичной точки?Swing JTextField - Максимум 3 цифры до десятичной и макс. 2 цифры после десятичного числа

Я использовал regex \\d{3}\\.\\d{2} для InputVerifier. Это позволяет точно 3 и 2 до и после десятичной дроби. Мне нужно <=3 и <=2 до и после десятичного числа.

Моему проекту нужен только JTextField.

+0

Ваш список тегов должен включать [tag: regex]. Согласно [этому вопросу] (http://stackoverflow.com/questions/10771269/one-or-two-numeric-digits-regex), вы можете использовать '\ d {1,2,3}. \ D {1 , 2} '. – goncalotomas

+0

Использует ли '^ \ d {1,3} \. \ D {1,2} $' вас? Это потребует по крайней мере 1 цифру с обеих сторон десятичной дроби, а первая часть может составлять от 1 до 3 цифр, а вторая может составлять от 1 до 2 цифр. Чтобы разрешить вход '.2', попробуйте'^\ d {0,3} \. \ D {1,2} $ '. –

+0

* «Моему проекту нужен только JTextField». * Почему? На самом деле это очень похоже на случай для JFormattedTextField. –

ответ

2

Чтобы проверить такие строки, вы можете использовать следующее регулярное выражение:

^\d{0,3}\.\d{1,2}$ 

Это потребует, по крайней мере, 1 цифру справа от десятичной, а первая часть может быть длиной от 0 до 3 цифр (из-за квантора {0,3}).

Обратите внимание, что он позволяет вводить .2.

+0

Используя ** InputVerifier **, после ввода 4-й цифры перед десятичной точкой и получения возвращаемого значения из метода «проверка» является ложным. Но мой запрос похож, я не должен был набирать цифры после ввода трех цифр до десятичного. То же самое происходит и с цифрами после десятичной дроби. Есть ли способ для этого ?????? – Kaushi

+0

Извините, что я задал слишком много вопросов, как новичок в Swings. – Kaushi

+0

Вы должны проверить официальную [InputVerifier documentation здесь] (http://docs.oracle.com/javase/6/docs/api/javax/swing/InputVerifier.html). Чтобы настроить эту проверку, вам нужно установить 'tf1.setInputVerifier (новый PassVerifier());' на 'JTextField' и внутри' PassVerifier', проверить 'tf.getText()' на регулярное выражение. Надеюсь, теперь это становится яснее. –

Смежные вопросы