| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > Поиск в JTable с задержкой |
| Автор: KidA 27.9.2006, 16:58 |
| Добрый день всем. Есть таблица. Поиск в таблице начинается сразу после ввода символа в JTextField. Если таблица большая (несколько тысяч записей), то поле ввода зависает, потому что уже пошел поиск. Поэтому трудно ввести сразу 4-5 символов, по которым нужен поиск. Задача следующая: Как начать поиск не сразу, а по истечении некоторого времени, например, 1 сек. |
| Автор: LSD 27.9.2006, 17:25 |
| Когда пользователь вводит в JTextField букву, запускай таймер на 1-2 сек. По истечении которого начинай поиск. Если пользователь вводит еще букву, то проверяешь было ли выполнено предыдущее задание, если нет, то отменяешь его и создаешь новое. |
| Автор: powerOn 27.9.2006, 17:29 |
| задержку можно сделать вызовом Thread.sleep(1000) к примеру; Но тут еще больше вопросов возникает с синхронизацией и определением моментов, когда можно считать, что пользователь ввел нужную комбинацию символов, а когда еще только вводит. А вообще, не плохо бы кнопку поставить, по нажатию которой стартует поиск. Или сам поиск как-то оптимизировать, чтобы зависаний небыло. |
| Автор: LSD 27.9.2006, 17:46 |
Если мы так сделаем в коде обработчика события, то остановим AWT-шный поток и результат будет даже хуже чем сейчас. А если создавать отдельный тред, то надо думать как ему отсрочить запуск поиска, если пользователь ввел еще один символ в поле, т.е. фактически получим тот же таймер. |
| Автор: KidA 27.9.2006, 17:54 |
| а возможно ли это сделать без нового треда(ради поиска вводить пятый поток не хочется)? |
| Автор: LSD 27.9.2006, 18:08 | ||
Без нового треда нет, полюбому. Но можно обойтись одним таймером на все приложение (плюс он много еще чего может делать).
|
| Автор: KidA 27.9.2006, 18:15 |
| большой пасиб |