Просто примечание к этому сообщению и направление, которое я выбрал.Когда я начинал свой проект GWT и изучал основы и читал посты, проблемы и советы других, первый совет, который я упустил из виду, был довольно прост - при использовании инфраструктуры GWT используйте только чистые 100% компоненты GWT.
Я изначально проигнорировал эти справедливые предупреждения коллег-разработчиков, потому что в эпоху инструментов с открытым исходным кодом и проектов с открытым исходным кодом развивается мышление «Вместо того, чтобы создавать инструмент, который даст мне определенную функциональность, позвольте мне посмотреть, есликто-то другой уже сделал это ».Такое мышление ускоряет разработку и практически стандартизирует проекты и методы реализации.
Однако за последние два месяца я обнаружил, что при работе с GWT лучше всего не следовать этому принципу.Возможно, потому что он не так широко распространен, как другие платформы, или требует очень определенного типа стиля кодирования, но тем не менее мой поиск (простой, сортируемый, загружаемый JSON) компонент сетки и (проверяющий, аккуратно стилизованный) компонент формы не был ничемесли не считать кошмар.
Это не потому, что их не существует.Они делают.Я попробовал ext-gwt, gwt-ext, gwt-мозаику и gwt-инкубатор.Это связано с тем, что многие компоненты отрываются от очень простой основы компоновки, которую предоставляет GWT (другими словами, панели, на которые вы помещаете виджеты, в основном должны быть панелями, снабженными инструментами).Это, в свою очередь, делает невозможным смешивание компонентов и получение желаемого результата.Это, в свою очередь, отходит от мышления «дай мне найти полезный компонент».
Просто интересный и последний момент, который, я думаю, стоит упомянуть.Таким образом, из-за моей реализации вышеупомянутого пункта, я решил написать свою собственную сетку и компоненты формы.Который я выполнил и работает нормально для меня (очевидно, потому что я написал их, я не подозреваю, что они будут полезны для всех остальных).Но в процессе написания компонента сетки и необходимости автоматически масштабировать и размечать столбцы после их отрисовки на родительской панели, я обнаружил, что знание окончательной ширины панелей неизвестно до окончательного рисования (в конце концов, это происходит долговаш код выполняется).По иронии судьбы я приступил к созданию набора панелей, которые взаимодействуют друг с другом, от родительской панели (которой в конечном итоге НУЖНО знать ее размер) вплоть до самых внутренних панелей, чтобы, когда мой компонент сетки наконец-то прорисовывался, я могзапустить метод onSizeKnown (int width, int height) и выполнить все необходимые измерения.
После того, как я это сделал, я ничего не мог сделать, кроме как смеяться.Потому что мне вдруг стало ясно, почему все остальные компоненты GWT требуют своих собственных панелей.По сути, я должен был сделать то же самое, чтобы получить то, что мне нужно было для работы.
Короче говоря, если вы начинающий GWT-разработчик, каким я был и есть (ищу?), Ищите интересные вещи, чтобы ваш проект выгляделКруто - это мой совет - если вы собираетесь использовать внешнюю платформу, такую как некоторые из вышеупомянутых, - используйте ТОЛЬКО эту платформу.Не смешивайте его компоненты с другими фреймворками.Научитесь любить эту структуру и постройте свой проект снизу вверх, используя их панели и методы проектирования.Если это вас пугает и заставляет чувствовать себя нервным и ограниченным, делайте то, что я делал, и пишите свои собственные, используя чисто ванильные компоненты GWT.Следуя этому совету, вы сэкономите ОЧЕНЬ много времени в долгосрочной перспективе.
Xandel