![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
man_without_face |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 1.4.2008 Репутация: нет Всего: 1 |
Фрейм. На нём несколько панелей. В одну из панелей грузится картинка. Некоторые области картинки покрываются сверху квадратами (используя Rectangle2D), для обозначения определённый областей. Каким образом можно сделать так, чтобы можно было выделять эти квадраты? Ну т.е. грубо говоря когда видишь в проводнике файлы и папки, то можешь их выделить - появляется синий прямоугольник, который тянется за курсором и при отпускании - всё, что попало в эту область выделяется. Как сделать такое же, но для моей ситуации?
|
|||
|
||||
bluecat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.2.2008 Репутация: нет Всего: нет |
Отслеживать события мыши, анализировать, смотреть какие квадраты попадают в выделенную область (геометрическая задача), а потом все это дело соотв. образом отображать в методе paint(Graphics g), в котором вы все и рисуете.
|
|||
|
||||
Reptor |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1213 Регистрация: 29.12.2004 Репутация: 1 Всего: 0 |
И вроде даже это можно проще сделать: квадраты определить как Rectangle kv = new Rectangle(100,100,100,100); вот а у него есть метод kv.contains(e.getX(), e.getY()) где координаты будеш брать с обработчиков мышки. Вот и этим и опредиляется пренадлежит ли точка которая в области твоему квадрату. А точка это будет любой угол области которую ты растягиваеш. |
|||
|
||||
bluecat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.2.2008 Репутация: нет Всего: нет |
угу, согласен. ну, правда если много квадратиков, то это, наверно, будет не совсем эффективно - проверять каждое событие мыши на каждом квадрате... Хотя я думаю, что это мелочи по сравнению с тем, что при это надо еще и выделенную область при каждом движении мыши отрисовывать. |
|||
|
||||
Reptor |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1213 Регистрация: 29.12.2004 Репутация: 1 Всего: 0 |
ну собственно можно ещё и использовать intersects - это будет пересечения квадрата и выделеной области.
А прорисовка будет к примеру на событии mouseDragged - там будет вызываться метод repaint() вот и в нём будет рисоваться динамически область которая выделяется. |
|||
|
||||
man_without_face |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 1.4.2008 Репутация: нет Всего: 1 |
хмммм.... точно! надо было просто подумать хорошо.
кстати всего 1200 квадратов. Поле 40x30. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |