Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с JFormattedField 
V
    Опции темы
ZMaximI
Дата 5.12.2007, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 18.5.2004
Где: Украина, г. Харьк ов

Репутация: нет
Всего: -1



Всем добрый день!

Помогите, пожалуйста, решить проблему следующего плана :

есть JFormattedField, мне нужно чтобы пользователь мог вводить только целые числе в это поле.
пересмотрел кучу примеров, но форматирование происходит только после смены фокуса.
Можно ли сделать так, чтобы форматирование происходило в момент ввода, т.е. чтобы вообще нельзя было ввести буквы.., любые другие символы, кроме цыфр ?

Спасибо.


--------------------
<удалено администрацией форума>
PM MAIL WWW ICQ   Вверх
Kangaroo
Дата 5.12.2007, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



ZMaximI, 
посмотри здесь.
Там zip code проверяется так, как тебе нужно.


--------------------
Lost....
PM MAIL MSN   Вверх
ZMaximI
Дата 5.12.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 18.5.2004
Где: Украина, г. Харьк ов

Репутация: нет
Всего: -1



Kangaroo,

Это все хорошо, спасибо, но тем самым ограничено кол-во символов ...
Можно ли не ограничевать кол-во ?


--------------------
<удалено администрацией форума>
PM MAIL WWW ICQ   Вверх
LSD
Дата 5.12.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Посмотри тут.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ZMaximI
Дата 5.12.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 18.5.2004
Где: Украина, г. Харьк ов

Репутация: нет
Всего: -1



можно ли используя DocumentFilter организовать маску для ввода ТОЛЬКО цыфр ?


--------------------
<удалено администрацией форума>
PM MAIL WWW ICQ   Вверх
Kangaroo
Дата 5.12.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(ZMaximI @  5.12.2007,  16:08 Найти цитируемый пост)
можно ли используя DocumentFilter организовать маску для ввода ТОЛЬКО цыфр ? 

Так а в чем проблема? LSD дал же хорошую ссылку.

Код

public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException
  {    
      //тут проверить цифры
      //если не цифры - ретурн
      fb.insertString(offset, string, attr);    
  }

  public void replace(FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException
  {
      //тут проверить цифры
      //если не цифры - ретурн
      fb.insertString(offset, string, attr); 
  }


Это сообщение отредактировал(а) Kangaroo - 5.12.2007, 17:27


--------------------
Lost....
PM MAIL MSN   Вверх
ZMaximI
Дата 5.12.2007, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 18.5.2004
Где: Украина, г. Харьк ов

Репутация: нет
Всего: -1



ссылка -то хорошая, кто спорит, тут во-мне проблема, я уже совсем запутался ...  smile  smile  smile 

подскажи, пожалуйста, как лучше проверять ....

с MaskFormatter'ом ничего хорошего не получается ..


--------------------
<удалено администрацией форума>
PM MAIL WWW ICQ   Вверх
Kangaroo
Дата 5.12.2007, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(ZMaximI @  5.12.2007,  16:32 Найти цитируемый пост)
подскажи, пожалуйста, как лучше проверять ....

Ну вот самое простое и, наверное, самое неправильное:
Код

  public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException
  {    
      try {
          Long i = Long.parseLong(string);
      }
      catch (NumberFormatException nfe) {
          return;
      }
      fb.insertString(offset, string, attr);    
  }
  
  

  public void replace(FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException
  {
      try {
          Long i = Long.parseLong(string);
      }
      catch (NumberFormatException nfe) {
          return;
      }
     fb.replace(offset, length, string, attr);
  }


Можно еще Regex'om проверять. Или посимвольно проверять.

Это сообщение отредактировал(а) Kangaroo - 5.12.2007, 17:50


--------------------
Lost....
PM MAIL MSN   Вверх
ZMaximI
Дата 5.12.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 18.5.2004
Где: Украина, г. Харьк ов

Репутация: нет
Всего: -1



Все гениально и просто !!!!!
СПАСИБО БОЛЬШОЕ !  smile 


--------------------
<удалено администрацией форума>
PM MAIL WWW ICQ   Вверх
Kangaroo
Дата 5.12.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(Kangaroo @  5.12.2007,  16:38 Найти цитируемый пост)
и, наверное, самое неправильное:

Подожди радоваться )) вот выдели строку и попробуй дописать цифры. Ща пришлю лучший вариант

PS
Изменил код в предыдущем посте. Теперь работает.

Это сообщение отредактировал(а) Kangaroo - 5.12.2007, 17:51


--------------------
Lost....
PM MAIL MSN   Вверх
ZMaximI
Дата 5.12.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 18.5.2004
Где: Украина, г. Харьк ов

Репутация: нет
Всего: -1



все нормально, я уже повсякому крутил вертел - все работает !
Лови + за помощь!
Еще раз, спасибо.


--------------------
<удалено администрацией форума>
PM MAIL WWW ICQ   Вверх
LSD
Дата 5.12.2007, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Если цифр будет больше чем вмещает long, то будет ошибка. Лучше делать так:
Код

for(int i = 0; i < str.length(); i++)
  if(!Character.isDigit(str.charAt(i)))
    return;



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Kangaroo
Дата 5.12.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 15
Всего: 104



Цитата(LSD @  5.12.2007,  17:26 Найти цитируемый пост)
Если цифр будет больше чем вмещает long, то будет ошибка. Лучше делать так:

Я тоже предлагал автору:
Цитата(Kangaroo @  5.12.2007,  16:38 Найти цитируемый пост)
Можно еще Regex'om проверять. Или посимвольно проверять.

Но ему вроде самый легкий вариант подошел )




--------------------
Lost....
PM MAIL MSN   Вверх
ZMaximI
Дата 7.12.2007, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 18.5.2004
Где: Украина, г. Харьк ов

Репутация: нет
Всего: -1



да, лучше сделаю так :

Код

...
    if((currentLength + string.length()) <= maxLength)
    {
        for(int i = 0; i < string.length(); i++)
            if(!Character.isDigit(string.charAt(i)))
                return;
      currentLength += string.length();
      fb.insertString(offset, string, attr);
    }
...


Простой вариант, конечно, работает и для текущего проекта его достаточно, но может произойти ситуация, которую предусмотрел LSD.

Большое спасибо.


--------------------
<удалено администрацией форума>
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.