![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| KidA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 29.3.2006 Репутация: нет Всего: нет |
Добрый день всем.
Есть таблица. Поиск в таблице начинается сразу после ввода символа в JTextField. Если таблица большая (несколько тысяч записей), то поле ввода зависает, потому что уже пошел поиск. Поэтому трудно ввести сразу 4-5 символов, по которым нужен поиск. Задача следующая: Как начать поиск не сразу, а по истечении некоторого времени, например, 1 сек. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Когда пользователь вводит в JTextField букву, запускай таймер на 1-2 сек. По истечении которого начинай поиск. Если пользователь вводит еще букву, то проверяешь было ли выполнено предыдущее задание, если нет, то отменяешь его и создаешь новое.
-------------------- 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. |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
задержку можно сделать вызовом Thread.sleep(1000) к примеру; Но тут еще больше вопросов возникает с синхронизацией и определением моментов, когда можно считать, что пользователь ввел нужную комбинацию символов, а когда еще только вводит.
А вообще, не плохо бы кнопку поставить, по нажатию которой стартует поиск. Или сам поиск как-то оптимизировать, чтобы зависаний небыло. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Если мы так сделаем в коде обработчика события, то остановим AWT-шный поток и результат будет даже хуже чем сейчас. А если создавать отдельный тред, то надо думать как ему отсрочить запуск поиска, если пользователь ввел еще один символ в поле, т.е. фактически получим тот же таймер. -------------------- 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. |
|||
|
||||
| KidA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 29.3.2006 Репутация: нет Всего: нет |
а возможно ли это сделать без нового треда(ради поиска вводить пятый поток не хочется)?
|
|||
|
||||
| LSD |
|
|||
![]() 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. |
|||
|
||||
| KidA |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 29.3.2006 Репутация: нет Всего: нет |
большой пасиб
|
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
Когда это писал, я подразумевал, что данный метод (Thread.sleep(1000)) будет вызван в потоке поиска, и естественно, не в потоке рассылки сообщений. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |