| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > схема с навигацией |
| Автор: Enterprise 23.4.2007, 11:52 |
| Привет. Вот какая у меня проблемка появилась: надо как то сделать привязку объектов к технологической схеме. Т.е. надо выводить некоторые характеристики объекта, который выбирается путем клика по определенной области схемы. Примерно как если кликать по карте города, а показываться будут адреса домов по которым и было нажатие мышиной кнопки. Совершенно не знаю с чего и начинать :( Важен ли формат в котором сделана схема? Или можно пользоваться обычными изображениями типа jpg? Какие библиотеки для этого нужны? Может кто примерчиком поделится или описанием? Заранее благодарю за помощь!! |
| Автор: snaker 23.4.2007, 18:19 |
| Если пользовать JPG то придётся делать векторные изображения, грубо говоря, многоугольники, и потом при клике сверять, в какую область попадает точка(примерно, как это делается в HTML с картинками)... Придется, наверно, организовать свой формат.... И сделать эдитор, чтоб посоздавать эти карты... Желательно, конкретизировать задачу... что именно надо получить.. |
| Автор: nornad 23.4.2007, 18:24 |
| Ну, раз никто ничего не говорит и не советует, то выскажусь хотя бы я. В общем, я бы делал так. Берём картинку в любом формате. Определяем в пикселах регионы (области) и сохраняем их в каком-либо формате. Для каждого региона тут же сохраняем и информацию, которая должна отображаться при клике. Далее берём панельку. Делаем отрисовку на ней картинки в натуральную величину. Панельку ложим в скроллпейн. Подгружаем соранённую информацию о регионах. При клике на панельке (яко и на "картинке") проверяем, не попали ли в какой-нибудь регион. Если попали - выводим в каком-либо виде нужную информацию (тултип, диалог и т.п. кошмарные вещи). Идея простейшая. Делал так в с++. На жабе не уверен только в том, можно ли нормально скроллить панель с картинкой в скроллпейне так, чтобы выглядело, будто скроллится картинка (ну, не игрался я с картинками). В остальном - всё решаемо. Идею описал в простейшем виде, но при желании нетрудно сделать вариант поумнее и поудобнее. Главное - общая суть. ;) Добавлено через 2 минуты и 58 секунд Ну вот. |
| Автор: Enterprise 23.4.2007, 18:38 |
| А на счет целесообразности подключения библиотек ГИС в свое приложение для решения задачи навигации есть у кого нить идеи? |
| Автор: nornad 23.4.2007, 19:43 |
| Как мне кажется, ГИС работает только с векторными изображениями. Но я с нею не игрался, так что не гарантирую. |
| Автор: fixxer 24.4.2007, 09:25 | ||||||
Да, конечно, объектами ГИС являются векторные элементы и битмапы как символы. Однако во всех ГИС есть возможность использовать большой битмап как подложку. В общем схема такова, подкладывается битмап, по нему обрисовываются объекты и назначаются свойства. Добавлено @ 09:39
Легко. Делаем наследника JComponent, инкапсулируем в него BufferedImage, preferredSize выставляем в размер картинки, а в paintComponent делаем примерно так:
Далее кладем компонент в JScrollPane и наслаждаемся. Только не забываем сделать JScrollPane#getViewport().setScrollMode(JViewport.BLIT_SCROLL_MODE) и в компоненте setOpaque(true), чтобы не весь Viewport перерисовывался, а только то что нужно. Мог где-то накосячить - писал здесь. |
| Автор: Enterprise 24.4.2007, 10:39 |
| Вполне возможно что мне и скроллинг не будет нужен - схемы будут влазить на экран и так |
| Автор: fixxer 24.4.2007, 11:17 | ||
Думаю лучше сделать как писал nornad. Ну типа завести свой фомат на основе xml, где описан битмап, регионы на нем и что делать при щелчке на регион, например послать запрос в базу, можно в базе все хранить, но мне не нравится, не универсально. |
| Автор: nornad 24.4.2007, 14:18 |
Если все регионы прямоугольные и без поворотов относительно горизонтали, то в принципе можно попробовать. Я сам ни разу не делал кнопку, которую не отличить от фона, но, думаю, это не такая уж и проблема. В крайнем случае можно создать свой класс кнопки. |
| Автор: Enterprise 3.5.2007, 15:24 |
| Неожиданный поворот событий Схем пока нет, но предполагаются они в векторном виде, возможно автокад. Каким образом можно использовать автокадовскую графику в своем приложении? |
| Автор: fixxer 3.5.2007, 23:11 |
| У Автокада два формата dwg - закрытый, dxf - открытый с довольно-таки простой и описаной структурой. Добавлено через 6 минут и 7 секунд Например: http://www.escape.de/~quincunx/dxfviewer/index.html http://www.ysystems.com/YcadvPageIntro.html |
| Автор: Enterprise 4.5.2007, 08:36 |
| Большое спасибо за ссылки!! А случайно на русском ничего не завалялось в запасе, а то мой буржуйский не идеален? |
| Автор: Enterprise 4.5.2007, 10:26 |
| Глянул dxfviewer и его новую бета версию под свинг и появились вопросы: 1. сделан он как оконное приложение, а мне бы хотелось использовать его (не обязательно его, можно подобный)функционал в своем приложении. Как это можно сделать? 2. снова возникает вопрос с навигацией т.е. надо выводить некоторые характеристики объекта, который выбирается путем клика по определенной области схемы. Как можно этого добиться? И что для этого надо использовать? |
| Автор: fixxer 4.5.2007, 10:46 |
| Дык исходники есть. Курите их, и используйте части в своем приложении. |
| Автор: Enterprise 4.5.2007, 10:53 |
| на dxfviewer исходников нет, да еще и новый обфускатором обработан :( |
| Автор: fixxer 4.5.2007, 11:01 |
| у dxfviewer можно попросить исходники. А на Ycadv точно есть. |
| Автор: Enterprise 4.5.2007, 11:13 |
| С Ycadv согласен, только скачал, но еще не смотрел. А вот на счет dxfviewer не уверен. Про исходники было написано для старой версии, а вот для новой не думаю что получится, иначе зачем обфускатор применять? |
| Автор: Enterprise 4.5.2007, 21:49 |
| Прикрутить просмотрщик удалось Возникли вопросы: 1. Изображение выводится на черном фоне. Как сделать фон белым? 2. Левой кнопкой мыши могу вращать изображение. Как сделать приближение правой кнопкой? 3. Хотелось бы знать координаты мыши, только не относительно панели, а относительно деталей изображения. Как? 4. Проблема с шрифтами. Кириллицу выводит знаками вопроса. Каким образом это исправить? Новая версия dxfviewer обладает необходимым функционалом вопросов 1-3, а с кириллицей там такая же проблема... Если кто пользовался DXFLoader-ом в своих приложениях, подскажите пожалуйста ответами на вопросы! |
| Автор: Enterprise 7.5.2007, 12:40 |
| неужели никто не использует dxf файлы? :( |