![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
не могу никак разобраться.. у меня сделано окно.. на нем кнопка.. мне надо из обработчика нажатия на эту кнопку обратится к форме чтобы сичтать текст с формы.. как это сделать?
|
|||
|
||||
| goodday1941 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
ну листенеры обычно внутнениние класы, потому им доступня все переменные класа родителяююю
то есть если тебе нужно стянуть инфу с текстарии, то выносиш ее как переменную класа
ну а далее в обработчике событий просто пишешь txt.getText() (помоему так, давно со свингом не стыкался) и получаешь текст общий вид что-то по типу
Добавлено @ 22:32 это все конечно имеет смысл если ты писал о Swing Это сообщение отредактировал(а) goodday1941 - 26.7.2008, 22:35 -------------------- SCJP 6 |
||||
|
|||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
дело в том что у меня класс обработчика открытый, отдельно от класса фрэйма... как быть в этом случае?
|
|||
|
||||
| goodday1941 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
все просто, в класс обработчика передай нужные параметры:
Добавлено @ 23:02 при добавлении листенера тогда будет что-то такое:
Это сообщение отредактировал(а) goodday1941 - 26.7.2008, 23:03 -------------------- SCJP 6 |
||||
|
|||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
goodday1941 и что мы получим?? либо я не допонимаю чего то... смотрите.. у меня есть форма с полем textField... на этой форме есть кнопка. при нажатии этой кнопки должна вызываться функция которая будет обрабатывать текст из TextField..функцию эту можно вызвать от формы только.. т.е. как пример MainForm.PerformFunction()... так вот мне надо чтобы этот вызов как то сделать при нажатии на кнопку..т.е. надо как то через обработчик нажатия обратится в главное форме и вызвать функцию PerformFunction(). вообще форма создается в методе main()... т.е. в main содержитяс одна строчка MyForm MainForm = new MyForm(); ..все остальное должно происходить в обработчике нажатия на кнопку и в других функциях...
|
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
я так понял - что ты просто не можешь найти ссылку на класс.
это делается так: YourClass.this |
|||
|
||||
| ecologist |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 452 Регистрация: 28.2.2007 Репутация: нет Всего: 9 |
Можно еще так - кнопка знает всегда, на ком она расположена - getParent. А само событие всегда содержит ссылку на того, кто это событие порождает - event.getSource().
Т.е. твой обработчик может получить ссылку на родителя того, кто послал собощение - ((JButton)event.getSource()).getParent() |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
ecologist, это тоже вариант, только неудобный.
кнопка может лежать на какой нибудь панели, эта панель может лежать на другой панели, и т.д. ... |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
ну передай тогда форму в обработчик, принцип тот же (dorogoyIV уже написал) тогда тебе будут доступны все паблик методы и паблик переменные (от них лучше сразу избався
не есть наглядно... а если у меня 16 вложенных панелей, в общем тот кто будет читать такой код много матерился бы Это сообщение отредактировал(а) goodday1941 - 27.7.2008, 12:02 -------------------- SCJP 6 |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
вобщем сделал я, что в обработчик события передается сам фрэйм... вот пример.. все это сделано в классе кнопки
ButtonListener action = new ButtonListener(frame); addActionListener(action); но вот проблема... я хотел вместо frame передавать в конструктор this.getParent()...(тем самым получить ссылку на панель, на которой расположена кнопка) но this.getParent() возвращает Container... как можно преобразовать этот тип в какой нибудь другой? чтобы получить хотя бы Panel... |
|||
|
||||
| goodday1941 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 709 Регистрация: 16.7.2006 Где: Украина, Киев Репутация: 8 Всего: 9 |
Добавлено через 2 минуты и 11 секунд а вообще вроде как панель на фрейме находится... значит передай в обработчик сразу панель Это сообщение отредактировал(а) goodday1941 - 31.7.2008, 12:01 -------------------- SCJP 6 |
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
ну я и сам так думал... попробовал, но вот такие ошибки вылезли.. Exception in thread "main" java.lang.NullPointerException at form.Button.<init>(Button.java:27) at form.Panel.<init>(Panel.java:24) at form.Frame.<init>(Frame.java:21) at form.Interface.<init>(Interface.java:17) at result.PrintResult.main(PrintResult.java:23) как бы от них избавится?* |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 36 Всего: 46 |
susanin, чего ты мучаешься?
ссылку ты можешь получить прямо в обработчике
|
|||
|
||||
| susanin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 587 Регистрация: 7.10.2006 Где: Санкт-Петербург Репутация: нет Всего: 7 |
у меня в принципе все нормально..просто непонятки с методом getParent().... у меня в конструктор обработчика передается панель... сам обработчик создается и добавляется в конструкторе кнопки...
но метод getParent() в моем случае почему то возвращает null... что неправильно делаю? Это сообщение отредактировал(а) susanin - 5.8.2008, 12:57 |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 15 Всего: 27 |
Мне кажется неправильным сама идея размещения бизнес-метода по обработке содержимого поля в классе формы. За это должен отвечать отдельный класс, вот он и должен передаваться в Action.
-------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "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. |