![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Появился ряд задач, в ходе выполнения которых, необхидимо отображать пользователю ход их выполнения.
Но при создании класса, у меня возникли проблемы. Опишу что должно получитсья: Пользователь выбирает какое-то действие, например импорт данных, выводится модальное окно, с прогрессбаром. Выполняется импорт данных, окно разрушается. Этот класс я хочу использовать во всех подобных слачаях. А теперь вопросы: Как получить доступ к BoundedRangeModel, когда для окна создается отдельный поток? Как в моем случае правильно уничтожить поток? Или я что-то не так делаю? Подскажите. -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Так же как и в любом другом случае: getModel(). Надо только смотреть чтобы модель при оповещении слушателей использовала SwingUtilities.invokeLater(). Просто выйди из метода run() и поток завершиться. -------------------- 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. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
Думаю, diablero имел в виду, что не видит способа завершить поток снаружи. Вообще, как я понял, специальных методов принудительного убиения уже не осталось (точнее, они есть, но они deprecated ибо грех). Чтобы снаружи завершить поток я, например, использовал сигнальный объект, на котором регулярно синхронизировался код в потоке. Когда нужно было завершить поток, я менял значение объекта на сигнальное. Поток это через некоторое время обнаруживал и завершался (выход из run, как и советует LSD). -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Чего-то у меня ничего не выходит.
Приведите пример, коркас из методов. -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| nornad |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 6 Всего: 31 |
В методе run:
Где-то снаружи (откуда надо завершить поток):
При создании потока ему надо передать threadCloseSignal, чтобы он его для себя сохранил и мог по нему синхронизироваться. Это сообщение отредактировал(а) nornad - 7.3.2007, 03:40 -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Только не Boolean, а boolean, а еще лучше AtomicBoolean.
-------------------- 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. |
|||
|
||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Почти работает. Осталось только все уничтожить, причем так работает при условии, что model определена при объявлении. Пока туплю -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 38 Всего: 538 |
Нет, не так.
А для вычислительного процесса создаешь отдельный поток, и из него вызываешь методы showProgressBarWindow(), hideProgressBarWindow() и setInt(). -------------------- 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. |
|||
|
||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Спасибо
Поставте LSD от меня +1 -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
||||
|
||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Час от часу не легче. Теперь встал вопрос синхронизации.
Создаю вычислительный процесс в отдельном потоке, из него работаю с ProgressBarWindows. Вычислительный процесс должен вернуть результат. Тут то и возникла проблема. Как дождаться результата.
-------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
используй метод join() класса Thread для ожидания завершения потока.
|
|||
|
||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
как? -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 31 Всего: 159 |
код давай, где ты поток вычислительный создаешь и будем думать как. |
|||
|
||||
| diablero |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 2 Всего: 5 |
Это пример класса, будет использоваться ProgressBarWindows
Пользуюсь так:
-------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
||||
|
|||||
![]()
|
| Правила форума "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. |