Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
173 / 131 / 74
Регистрация: 04.12.2013
Сообщений: 552

Рисование компонентов - управлять перекрытием фигур

08.05.2014, 21:06. Показов 1519. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И так есть ситуация:
Класс Shape имет подклассы Rect, Circle и подобные для рисования фигур.
Класс Instrument имеет подклассы Brush, Eraser и т.п.
В методе paintComponent(Graphics g) рисуются все фигуры. Ну и само собой, не забываем, что перерисовуются уже имеющиеся. Выглядит так:
Java
1
2
3
4
paintComponent(Graphics g) {
//нарисовались Shape
//нарисовались Instrument
}
И вот проблема в том, что каждая последняя Shape будет всегда перекрыта старым Instrument. Как можно решить эту ситуацию, чтобы все перерисовывалось в правильной последовательности? Учитывайте условия, что в paintComponent проверяются Instrument и Shape на null и каждая фигура записывается в Stack или ArrayList (не важно куда).
Примечание:
Нет смысла объединять Shape и Instrument в один, потому что они имеют различный интерфейс.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.05.2014, 21:06
Ответы с готовыми решениями:

Рисование фигур в Swing
Привет всем, кто знает как реализовать данную задачку? Разработать графическое приложение, выполняющее выбор фигуры для рисования,...

Рисование фигур
написать программу которая спрашивает у пользователя какую фигуру надо нарисовать: 1 - прямоугольник, 2 - круг, 3 - дугу и какого цвета;и...

Рисование фигур
Сделал пример с книги, должен по идее рисоваться круг и результат быть такой, как в книге: Рисуем круг: (0, 0, 100) Прошло...

5
37 / 37 / 25
Регистрация: 19.11.2012
Сообщений: 197
08.05.2014, 23:49
Поменяйте местами отрисовку Instrument и Shape
0
173 / 131 / 74
Регистрация: 04.12.2013
Сообщений: 552
08.05.2014, 23:52  [ТС]
EagleAlex, и тогда объекты Shape всегда будут перекрывать Instrument...
0
173 / 131 / 74
Регистрация: 04.12.2013
Сообщений: 552
08.05.2014, 23:58  [ТС]
Смотрите прикрепление. Прямоугольник был нарисован после кисти.
Миниатюры
Рисование компонентов - управлять перекрытием фигур  
0
173 / 131 / 74
Регистрация: 04.12.2013
Сообщений: 552
10.05.2014, 10:13  [ТС]
Решение найдено:
Добавляю после каждого рисования объекты Instrument и Shape в новый стек, откуда потом в правильном порядке рисуются элементы.
Тему можно закрывать.
0
126 / 113 / 56
Регистрация: 05.12.2012
Сообщений: 463
11.05.2014, 14:34
Может я не в тему, но:
Задача похожа на некоторое подобие рисовалки, и не проще ли просто убрать перерисовку, например, а просто добавлять уже новые фигурки на уже имеющиеся?..

Java
1
2
3
4
@Override
public void update(Graphics g){
    paint(g);
}
ну или по-хорошему сначала на BufferedImage рисовать, а потом его на панель.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2014, 14:34
Помогаю со студенческими работами здесь

Рисование фигур!
Всем привет! подскажите пожалуйста, как нарисовать несколько фигур в билдере, расположение которых будут меняться в зависимости от заданных...

Рисование фигур
Разобрался как нарисовать фигу, но как сделать когда зажал кнопку мыши то появляется контур этой фигуры??? а как отпустил нарисовалась сама...

Рисование фигур
Программа вывода прямоугольного треугольника заполненного звездочками с вершиной N с использование цыклов while

Рисование фигур
Добрый вечер. Нужна помощь с рисованием фигур. Дали задание нарисовать трехмерный куб, через 2 класса(один наследует второй). Не могу...

Рисование фигур
Я реализовал рисование прямоугольника и эллипса таким способом, как в пэинте (при нажатии и движении мыши фигура растягивается и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru