| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > выбор технологии, фреймворков и т.п. |
| Автор: kulibin 28.6.2009, 00:07 |
| Стоит такая задачка: написать на java десктопное приложение для работы с БД, Требуется нормальный GUI - с большим упором на таблицы - и с очень к ним большими требованиями. Немного предыстории: сам я родом с C#.NET. Сейчас по работе меня перекинули на Java-проект, Очень заинтересовала Java - особенно в области Hibernate & EJB & Spring и т.п. И вот я решил одну домашнюю разработку на явке сделать. Вот тут то и началась фигня Вопрос: подскажите пожалуйста чем на джаве можно сделать красивый и удобный гуй? Скины и красивые кнопочки извращённого вида не интересуют абсолютно. Интересуют гриды - с различными эдиторами для ячеек, с многострочными заголовками с группировкой, с возможностью древовидного отображения - группировки строк и т.п. По сути весь интерфейс будет построен на гридах. JTable я не понял. Если с него и можно чтото выжать - то просто нечеловеческими усилиями - причём учитывая то, что данные будут в виде хибернейтных POJO-объектов - то эти нечеловеческие усилия возможно прийдётся повторить для каждой таблицы приложения.... Немного вот пролистнул по SWT описание. Там скрины както поинтереснее чем со свингом выглядят - но всёже таблички както грустновато выглядят :( Java FX вот ещё чтото мелькало - вообще полностью не в курсе что это... Какие ещё есть варианты? Т.е. в сторону каких технологий смотреть и в сторону каких компонентов? Возможно и под свинг есть какието гриды с богатыми возможностями и простые в обращении? Кроме возможностей предоставления удобств узеру очень ещё интересует удобство и простота для программиста - т.к. в принципе хороший грид можно и самому с нуля написать - вопрос только в том сколько лет это займёт Да - и ещё - обязательное требование к компонентам - бесплатность - а в идеале опенсурсность. Буду рад любым мыслям на эту тему. Спасибо. |
| Автор: COVD 28.6.2009, 08:30 | ||||||||
Ну и запросы. Обычно довольствуются ненормальным, некрасивым и неудобным (шутка)
Практика показала, что для многих задач достаточно веб-средств (html + javascript) для реализации клиента. Но в некоторых случаях этого недостаточно. Этот вопрос, на мой взгляд, имеет смысл лишь применительно к конкретной индустрии. Поинтересуйтесь, что используют ваши конкуренты.
"хороший"(заточенный под вашу конкретную задачу) грид надо писать с "нуля". И этот "нуль" - либо JTable из Swing, либо аналог из SWT. Эти компоненты относительно низкого уровня и осваиваются не за 15 минут. Выбор Swing vs SWT делают по разным критериям, но если делать акцент на таблицы, то у меня сложилось впечатление, что JTable предпочтительнее. |
| Автор: dorogoyIV 28.6.2009, 17:37 | ||
извините, если вы хотите обсудить возможности, то вам в другой раздел., а если есть вопросы по JavaSE vs FX , то задавайте, вам с удовольствием помогут... |
| Автор: kulibin 28.6.2009, 20:35 | ||||||
| Щас вот курочу всёже JTable - SWT я забоялся - не охота коллекционировать поверхностные знания о различных технологиях. Путь пока Swing будет - и JTable. Пытался чтото найти по типу надстройки над JTable - ничего интересного опенсурсного не нашол. Да и платного тоже и мало и не особо оно. Сейчас вот писаю модельку для работы JTable с коллекциями POJO-объектов хибернейтных. Вроде получается чтото. Даже немного нравиться начинает Вот нашкрябал пару классов:
Охота заслушать мнения специалистов по поводу этой моей поделки С событиями модели не оч разобрался: вот это
это для кого? для самой JTable - или для обработки редактирования - сохранения в бд и т.п.? И вообще как принято обрабатывать редактирование модели пользователем: из самой модели вызывать методы сохранения персистентных объектов - или только события соответствующие тут генерить? |
| Автор: aleksandy 28.6.2009, 22:30 | ||||
Это для любого слушателя модели, коим является и JTable. Обработку редактирования правильно делать в этих самых слушателях. |
| Автор: kulibin 29.6.2009, 01:00 | ||||||
угу.... интересно.... а я думал в модель эту обработку запихнуть.... куда ж её девать то..... у меня получается есть классы по типу DOA - они же по типу сервисов - их методы будут дёргаться для извлечение энтитей, сохранения, удаления - и они же будут инкапсулировать основную бизнес-логику. И я собирался (пока не делал этого вообще) дёргать эти самые дао/бизнес-сервисы из моделей таблиц.... у меня в принципе и не было уверенности в правильности этого |
| Автор: COVD 29.6.2009, 05:26 |
| kulibin, основной принцип Swing - все операции с гуи делаются в одном потоке - EventDispatchThread (EDT). Этот поток извлекает из очереди события и обрабатывает. Когда вы вызываете метод fire..something..Changed(), то в итоге, если необходима перерисовка, создается соответствующий обьект-событие (Event) и помещается в очередь EDT. В эту очередь также попадают и события от мыши, например. Теперь главное. Модификация модели (таблицы, графика,...) тоже должна осуществляться через EDT. Если обновления берутся из внешнего источника (файл, база данных, сеть), то на их подготовку (загрузка, парсинг) требуется время. Поэтому подготовку данных надо делать в другом потоке (иначе гуи будет "замораживаться"). Но вставку обновлений в модель, т.е. ее модификацию, только через EDT. Таким образом, нужен контроллер, который этим занимается. В IDE NetBeans (бесплатный opensource от Sun) есть среди прочих и шаблон проекта JavaDesktopDatabaseProject. Это "конструктор" заточенный, на мой взгляд, именно под вашу задачу. Со всеми модными делами. И документация на уровне. Сам я не пробовал, но рекомендую взглянуть. |
| Автор: kulibin 29.6.2009, 11:08 | ||||
Спасибо, очень ценная информация - я этот момент благополучно пропустил - как наверное и многие другие
Я эклипс пользую. Сначала мне нетбианс больше понравился - но потом на работе я на нём отлаживал ёжб-проект с жбоссом - и оно в debug-e жостко глючило - отваливались брейкпойнты (не отображались) и там ещё чтото. Подстава была жосткая - я по работе изза нетбианс чуть не выгреб люлей. Пришлось в пожарном порядке ставить эклипс (ещё у нас на работе все эклипс пользуют - и помочь с нетбинс мне никто не смог - может там и мелочь какаято была, может я загнался - но по эклипсу если чтото такое - то хоть есть кому помочь быстро). А шаблон десктопного приложения на нетбинсе я видел мельком - там чтото очень громоздкое. И не оч нравится то, что в нетбинсе код форм и страничек сильно напоминает родную визуал-студио - такой же избыточный и нечитаемый. Это хорошо только в первые 3 дня изучения - потом нужно срочно переключаться на ручное написание кода форм - чтобы не вошло в привычку. Вот эти вот бэкинг-бины для вёба - и подобный же подход к гую - это зло. |
| Автор: Connie 29.6.2009, 15:31 | ||
|
| Автор: kulibin 29.6.2009, 15:58 | ||||
Не оч понял да и к эклипсу много плагинов всяких - и возможно сам чтото начну под эклипс писать - и ещё в сторону SWT поглядываю - хотя пока всёже остановился на Swing-e. Думаю с эклипсом мне больше попути. Хотя было бы интересно заслушать контраргументы - чем нетбианс лучше и т.п. И ещё в связи с этим же возможно про JBoss vs GlassFish - GlassFish & NetBians родные в доску - а эклипс к JBoss ближе |
| Автор: Connie 29.6.2009, 16:02 |
| http://forum.vingrad.ru/forum/topic-198249.html |