![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
JavaNewb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Я только начинаю изучать Яву. Весьма непривычный язык, надо сказать.
Есть ли где-то собрание лёгких примеров демонстрирующих работу кнопок, обработка их событий и т.д.? В частности интересует небольшой примерчик программы реализующий рисование курсором мыши. Нет ли где такого? Там много чего интересного можно почерпнуть - и прорисовку, и обработки событий... Спасибо! |
|||
|
||||
Kangaroo |
|
||||||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
Вот - Swing tutorial, лучшее, что есть по Свингу. С примерами и объяснениями.
Вот мой с многочисленными комментариями:
-------------------- Lost.... |
||||||
|
|||||||
JavaNewb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Круто! То, что нужно! Спасибо большое!
Туториал свинговский я посмотрел уже. Видел всякие "SwingPaintDemo4Project". Но то, что ты дал - просто супер по сравнению с "SwingPaintDemo4Project" ![]() |
|||
|
||||
JavaNewb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
А зачем здесь буферизируется изображение? Почему это необходимо делать??
|
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
Чтобы сохранять то, что пользователь уже нарисовал. Если бы не было этого буфера, то при перирисовки окна (например, при изменении размера) все изображение пропадало бы. Это сообщение отредактировал(а) Kangaroo - 5.3.2008, 10:26 -------------------- Lost.... |
|||
|
||||
JavaNewb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Kangaroo, спасибо за объяснение!
Проголосовал за тебя! (в подписи) ![]() Вот ещё что непонятно.. Зачем там существует переменная backgroundGraphics. Я вижу только то, что там она объявляется, устанавливается цвет на нёё, рисуется овал на этом "графическом контексте" (если можно так выразиться) и ещё делается вот это: backgroundGraphics = bufferImage.getGraphics(); насколько я понял это присваивание (копирование) bufferImage в backgroundGraphics. Но больше ничего с этим backgroundGraphics и не делается.. А какая же цель её существования там?? Эту переменную ведь никуда не переносят и никак её и не используют, как я понял... Зачем же она нужна? |
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
Все правильно. То что пользователь рисует мы рисуем на bufferImage, а точнее на "графическом контексте" этой картинка - backgroundGraphics. Так что этой строкой: backgroundGraphics = bufferImage.getGraphics(); мы просто связываем переменную backgroundGraphics, с "графическом контекстом" картинки, чтобы потом рисовать на ней. -------------------- Lost.... |
|||
|
||||
JavaNewb |
|
||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Вот это как не получается понять ![]() Всё, что пользователь рисует мы кидаем на bufferImage.. но причём же тут вообще backgroundGraphics? Не очень понятная технология ![]() Получается мы рисуем напрямую на bufferImage и потом ЕЁ же отрисовываем на панель:
а причём же здесь backgroundGraphics, если она в этом процессе не используется? ![]() Я уже попробовал убрать и оно не стало работать. Понятно, что оно зачем-то нужно, но вот зачем именно так врубиться и не могу :( |
||||
|
|||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
Мы не прямо на bufferImage рисуем, а через его graphics - backgroundGraphics Вот, смотри:
Это у graphics есть методы setColor, fillOval, drawLine, etc. У image их нету. -------------------- Lost.... |
|||
|
||||
JavaNewb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
а.. "Вон оно чё!"
![]() Т.е. получается, что после кода: backgroundGraphics = bufferImage.getGraphics(); backgroundGraphics становится как будто ссылкой на bufferImage и рисуя на backgroundGraphics у нас меняется и содержимое bufferImage?? Фигасе финт ушами ![]() |
|||
|
||||
JavaNewb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Так я понял? или нет всё-таки??
|
|||
|
||||
Kangaroo |
|
|||
![]() AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 15 Всего: 104 |
backgroundGraphics это не "как будто ссылка", а объект класса, у которого есть функциональность для рисования на bufferImage. Не знаю как красиво сказать ![]() -------------------- Lost.... |
|||
|
||||
DelphiFun |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 10.11.2006 Репутация: нет Всего: нет |
[удалено]
Это сообщение отредактировал(а) DelphiFun - 12.3.2008, 07:19 |
|||
|
||||
JavaNewb |
|
||||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Kangaroo, если позволишь - ещё вопрос!
![]() Если в вышеидущем коде необходимо нарисовать что-то до того как пользователь начнёт рисовать где можно такой код прописать? Я попытался сделать это вот здесь:
но получил вот такую ошибку:
Он о чём говорит? То, что "backgroundGraphics" не инициализировано ещё? Но разве вызываемый перед этим метод paint() не инициализирует "backgroundGraphics"? Это сообщение отредактировал(а) JavaNewb - 5.6.2008, 12:22 |
||||
|
|||||
JavaNewb |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 5.3.2008 Репутация: нет Всего: нет |
Кстати, а как в данном случае вообще из родительского класса обратиться к переменной backgroundGraphics? т.е. например из функции public static void main(String[] args)?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |