Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: GUI и Java FX приложения > Возвращение данных от формы |
Автор: SID_M 12.3.2006, 13:19 |
Есть ли механизм получения данных от немодальной формы, т.е. от JFrame, которая создана в другом Thread. Из главного окна я вызываю много новых, но нужно получить результаты их работы назад. Причем каждое новое окно создается в новом потоке. Как мне быть?! ![]() Желательно простенький пример. ![]() |
Автор: LSD 12.3.2006, 13:33 | ||
Определи методы с помощью которых твои компоненты будут возвращать результаты и вызывай их. Например можно задать такой интерфейс:
затем имплементируешь его своими фреймами. Когда хочешь получить данные, проверяешь что ввод данных закончен (isEditingComplete()) и если да, то получаешь их (getData()). |
Автор: SID_M 12.3.2006, 13:40 |
Красиво. Вото только один вопрос в данном случае <T> - это по аналогии с С++ любой тип, который туда подставишь, правильно? А вообще красиво... ![]() А как быть с потоками? Новые окна, то создаются в разных потоках с основным... Мож я туплю правда. |
Автор: SID_M 12.3.2006, 13:47 |
А как быть с потоками? Новые окна, то создаются в разных потоках с основным... Мож я туплю правда. |
Автор: powerOn 12.3.2006, 15:15 |
Предположим есть у тебя главная форма, которая просто в своем заголовке отображает число, и больше ничего.... И есть на главной форме кнопка, которая открывает в новом потоке другую новую форму с полем ввода, куда ты должен ввести число. Введешь число ты в появившуюся форму, закроешь её, и должно это число появиться в заголовке главной формы. Это простейший пример передачи данных от одной формы к другой. Так вот, чтобы это реализовать нужно сделать так, чтобы форма для ввода числа знала о существовании главной формы и в момент своего закрытия вызывала метод главной формы для установки числа. Передавай ссылку на главную форму дочерним окнам, и пусть дочернии окна вызавают методы главно формы. Только не забудь о синхронизиронизации. |
Автор: batigoal 12.3.2006, 19:05 |
От сказал так сказал... ![]() |
Автор: DarkDS 12.3.2006, 19:29 | ||||
Тут есть 2 варианта. 1. Создать евент листенер со определенным эвентом и главное окно наследовать от него. При окончании работы в немодальной форме посылается эвент о том, что работа закончена и результат работы. По этому варианту пример приведу попозже, так как под рукой исходников нет вообще, а на память всего не напишу ![]() 2. Менее красивый: У главной формы определить метод, через который можно передавать данные. При завершении работы через ивнок лайтер вызвать у формы метод. То есть примерно так:
|
Автор: powerOn 13.3.2006, 08:17 | ||
![]() о синхронизации конечно речь идет... |
Автор: SID_M 13.3.2006, 11:41 |
Спасибо!!! Очень благодарен всем. Проблема решена... |