![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
WhoogMan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 22.9.2012 Репутация: нет Всего: нет |
Как обратиться к форме (вызвать ее метод: свернуть, закрыть или просто цвет фона изменить) из другого компонента или собственного класса?
В C#, Delphi главная форма была доступно из любой части программы, а как это делается в java? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Ссылка на объект сохраняется в статической переменной. -------------------- 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. |
|||
|
||||
WhoogMan |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 22.9.2012 Репутация: нет Всего: нет |
а как к ней обращаться?
допустим: создал консольное приложение
у меня есть класс кнопки
и кнопкой я хочу закрыть форму
|
||||||
|
|||||||
Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Я в таких случаях использую один из двух вариантов:
1. Если я знаю, что будет только одна форма этого класса, то использую шаблон singleton и внутри класса формы я всегда знаю ссылку на нее. В Вашем случае это вполне подходит. 2. Если я знаю, что ссылка на какую-либо форму потребуется в определенном классе, то я просто ее туда передаю. Либо создаю возможность спросить, где она. -------------------- Mirkes |
|||
|
||||
WhoogMan |
|
||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 22.9.2012 Репутация: нет Всего: нет |
1. - Спасибо, много почитал. Ошибок нет, но ощущение будто я обращаюсь не к своей форме
я правильно понял? моя форма
и затем в обработчике кнопки
2. У меня побольше вложенных классов (панель->панель->панель->кнопка). Тащить внутрь ссылку на форму не хочется |
||||
|
|||||
Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 7 Всего: 17 |
Вобщем-то верно, единственный вопрос, как форма создается впервые? Если через прямой вызов конструктора, то это не правильно. В правильно реализованном Singletone конструктор private и доступ к классу только через getInstance. Этого в приведенном фрагменте не видно. Если главная форма создается не через getInstance, то вы таки имеете две формы
![]() -------------------- Mirkes |
|||
|
||||
WhoogMan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 22.9.2012 Репутация: нет Всего: нет |
это очевидно. Спасибо, работает
|
|||
|
||||
AlexAddams |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 31.1.2008 Репутация: нет Всего: нет |
Обычно в таких случаях, добавляю один слушатель для нескольких объектов, отдельный класс слушатель и add...Listeners(...) метод кнопки, окна, метки и т. д., выполняет одно и тоже действие и в одном месте. Таким образом можно сгруппировать разными слушателями хоть каждый объект по отдельности.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |