![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| SmaLL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 557 Регистрация: 17.12.2002 Где: Voronezh Репутация: 1 Всего: 2 |
Есть два класса - один делает интерфейс пользователя, а второй выполняет какую-либо операцию (например считывает файл).
Мне нужно в интерфейсе отображать прогресс выполнения операции рабочим классом. На Дельфи в рабочем классе делалось свойство процедурного типа, а интерфейсный класс передавал свойству свой обработчик (метод). А как такие вещи делаются в Яве? -------------------- Что ни делается - всЁ к лучшему! SmallWeb Мой адрес не дом и не улица, мой адрес родной пивзавод! |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Вообще такой механизм делается за счет callback функций. Т.е. контроллеру (в данном случае, считыватлю файла) передается указатель на класс, у которого есть какая-то функция. В процессе своей работы контроллер регулярно дергает этот класс за эту функцию. Так вот если, ты сделаешь эту функцию так, чтобы она отображала прогресс выполнения - то вот и все решение.
|
|||
|
||||
| SmaLL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 557 Регистрация: 17.12.2002 Где: Voronezh Репутация: 1 Всего: 2 |
Т.е. это как для обработки событий графических контролов нужно создать внутри интерфейсного класса ещЁ один класс с callback функцией и передавать этот класс контроллеру?
-------------------- Что ни делается - всЁ к лучшему! SmallWeb Мой адрес не дом и не улица, мой адрес родной пивзавод! |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Совершенно верно.
|
|||
|
||||
| SmaLL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 557 Регистрация: 17.12.2002 Где: Voronezh Репутация: 1 Всего: 2 |
Cенькс
-------------------- Что ни делается - всЁ к лучшему! SmallWeb Мой адрес не дом и не улица, мой адрес родной пивзавод! |
|||
|
||||
| Sun |
|
|||
|
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: 8 Всего: 48 |
Вообщето, легче в потоке в котором идет считывание файла, вызывать метод прогресс бара, который отвечает за текущую позицию и инкрементировать счетчик позиций прогресс бара. Так для класса ProgressMonitor можно вызывать метод setProgress(int nv). А говорить о механизме callback функций для Java не совсем правильно, так как такого понятия как указатель на функцию в Java нет. Механизм callbackфункций был придуман, все таки, для таких языков как C, IMHO. -------------------- Account removed |
|||
|
||||
| SmaLL |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 557 Регистрация: 17.12.2002 Где: Voronezh Репутация: 1 Всего: 2 |
Так для этого нужно чтобы класс, считывающий файл знал о существовании прогресса! А если кроме прогресса мне понадобится изменять ещЁ например Label, то класс должен будет ещЁ знать о Label, так можно дойти до передачи ссылки на весь класс с интерфейсом. Нет, Sun , это не наш метод. Я уже разобрался с этой проблемой. -------------------- Что ни делается - всЁ к лучшему! SmallWeb Мой адрес не дом и не улица, мой адрес родной пивзавод! |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Callback не подразумевает указатель - это просто так повелось языков типа С или BorlandPascal из-за их техники реализации данного механизма. А сам механизм только подразумевает технику при которой объекту передается ссылка/указатель/иной механизм с помощью которого вызываемый объект может послать сообщение вызывающему. Так что callback для JAVA тоже нормально звучит. Хотя конечно можно говорить об отсутствии терминологического стандарта, который и порождает разные интепретации. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |