| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Как сделать работу с событиями? |
| Автор: SmaLL 1.4.2003, 17:27 |
| Есть два класса - один делает интерфейс пользователя, а второй выполняет какую-либо операцию (например считывает файл). Мне нужно в интерфейсе отображать прогресс выполнения операции рабочим классом. На Дельфи в рабочем классе делалось свойство процедурного типа, а интерфейсный класс передавал свойству свой обработчик (метод). А как такие вещи делаются в Яве? |
| Автор: AntonSaburov 1.4.2003, 18:03 |
| Вообще такой механизм делается за счет callback функций. Т.е. контроллеру (в данном случае, считыватлю файла) передается указатель на класс, у которого есть какая-то функция. В процессе своей работы контроллер регулярно дергает этот класс за эту функцию. Так вот если, ты сделаешь эту функцию так, чтобы она отображала прогресс выполнения - то вот и все решение. |
| Автор: SmaLL 1.4.2003, 18:26 |
| Т.е. это как для обработки событий графических контролов нужно создать внутри интерфейсного класса ещЁ один класс с callback функцией и передавать этот класс контроллеру? |
| Автор: AntonSaburov 1.4.2003, 22:11 |
| Совершенно верно. |
| Автор: SmaLL 1.4.2003, 23:17 |
| Cенькс |
| Автор: Sun 2.4.2003, 18:35 | ||
Вообщето, легче в потоке в котором идет считывание файла, вызывать метод прогресс бара, который отвечает за текущую позицию и инкрементировать счетчик позиций прогресс бара. Так для класса ProgressMonitor можно вызывать метод setProgress(int nv). А говорить о механизме callback функций для Java не совсем правильно, так как такого понятия как указатель на функцию в Java нет. Механизм callbackфункций был придуман, все таки, для таких языков как C, IMHO. |
| Автор: SmaLL 2.4.2003, 23:06 | ||
Так для этого нужно чтобы класс, считывающий файл знал о существовании прогресса! А если кроме прогресса мне понадобится изменять ещЁ например Label, то класс должен будет ещЁ знать о Label, так можно дойти до передачи ссылки на весь класс с интерфейсом. Нет, Sun , это не наш метод. Я уже разобрался с этой проблемой. |
| Автор: AntonSaburov 2.4.2003, 16:43 | ||
Callback не подразумевает указатель - это просто так повелось языков типа С или BorlandPascal из-за их техники реализации данного механизма. А сам механизм только подразумевает технику при которой объекту передается ссылка/указатель/иной механизм с помощью которого вызываемый объект может послать сообщение вызывающему. Так что callback для JAVA тоже нормально звучит. Хотя конечно можно говорить об отсутствии терминологического стандарта, который и порождает разные интепретации. |