Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Теоретическая значимость работы: Описание теоретической значимости (ценности) результатов исследования должно присутствовать во введении...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Ответ: Где-то в тексте, если его внимательно читать, вы увидите, что вся идея в том, что он должен быть правильно настроенным этот объект. Что я под этим подразумеваю? А вот представьте себе такую историю. Вот у вас на экране главное окно. И вы пользователю говорите: «Рисуй!». Дали ему возможность рисовать. Вот он рисует-рисует. А теперь скажите, а было бы нормально, если бы пользователь вышел за границы окна? Вот, например, рисовалка, которой я пользуюсь, она рисует где хочет. Она как раз берет в качестве поверхности для рисования экран. Не какое-то конкретное окно, а весь экран. Но она для этого и писалась, чтобы я мог рисовать по всему экрану. А вот, например, когда я нахожусь внутри Paint, происходит отсечение. Почему? Есть такое понятие «клиентская область». И я за ее пределы не могу выйти. А кто это делает? Границы объекта. Когда его создают, то его создают не просто, а для конкретного окна. И я говорю: «вот для этого окна Graphicsмне дай!». И вам в этом объекте настроят область отсечения, чтобы вы не могли испортить.
Итак, чтобы попросить Graphicsнужно взять окно. Я сейчас переключусь в ваш конструктор. Это же окно (AWT)? Да, он от Frameнаследует. Это как раз окно. Я пишу this.getGraphics(). У любого окна есть готовый метод. Я говорю: «дай мне Graphics». И они мне его создадут и правильно настроят. И я не смогу выйти за контур этой клиентской части этого окна. А кто такой MyListener? Кто он такой? Никто. Вы можете тут thisнаписать, да вообще, что угодно. Как здесь можно сделать возможность получить объект Graphics? Тогда нужно что передавать? Ссылочку на окно. Вот понимаете?
И начинается… Ему нужно ссылочку на окно, ссылочку еще на что-то, ссылочку еще куда-то. Потому что он у вас отдельный класс и до функционала Frame (а он ему очень нужен) дотянуться не может. Мы сейчас тогда должны будем сделать здесь конструктор с параметрами, создать MyListener, вы передаете this. Это целая история. Здесь надо сделать член класса. Запоминать это все. Вы спросите: «это сложно разве сделать?». Нет, не сложно. Но это уже сделано. Если вы сделаете внутренний класс, то он получает ссылку на тот объект в котором он находится. Помните, мы на прошлом курсе изучали, что у вас может быть внутренний класс со словом staticи без слова static. Если он со словом static, то он не получает ссылку на объект внешнего класса, а если он без static (а это именно тот вариант, который нам нужен), то получает эту ссылку.
Поэтому я сейчас вырезаю вот этот класс и вставляю в AWT.

Теперь он стал членом класса. И теперь все понятно. Я пишу getGraphics(). Все работает. Вы спросите: «откуда она его взяла?». Из контейнера. Это внутренний класс и у него ссылка на контейнер.
Вы видите насколько данное взаимодействие удобно? Вы же будете постоянно во всех пользовательских интерфейсах делать обработчики на события. Нам нужен функционал из контейнера. Поэтому внутренний класс – это лучшее решение, потому что уже связь между ними сделана. И вам не нужно лишний код каждый раз писать. Всё. Мы все рисование отработали. Учтите, что по умолчанию объект Graphicsзапускает программу, а на экране ничего нет. По умолчанию, когда создается объект Graphics, толщина линии равна одному пикселю черного цвета. Линия непрерывная.
Вопрос: Запустили программу? Работает?
Ответ: Нет.
Вопрос: А почему не рисует?
Ответ: Мы этот объект сделали. А мы подписались на него? Поэтому открываем конструктор.
Во-первых, мы должны создать объект этого класса. Мы же собирались на два события подписаться. Как создать объект, тут все понятно. Ничего нового для нас естественно нет.
MyListener my = new MyListener();
Создали. И вот теперь этот объект «my» подписываем. Вопрос: «накого?».
· addMouseListener(my);
· addMouseMotionListener(my);
Вот теперь после этого наша программа должна работать.

|
|
|
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!