Какую поддержку имеет GWT для менеджеров компоновки Java? - PullRequest
1 голос
/ 18 апреля 2009

Кажется, это вопрос, где ответ неявен, поэтому я не могу найти ничего явного.

Поддерживает ли Google Web Toolkit только настраиваемые менеджеры компоновки или подмножество диспетчеров компоновки Java?

Например, возможно ли взять приложение Java Swing с помощью GroupLayout и заставить его работать с GWT?

Ответы [ 4 ]

6 голосов
/ 18 апреля 2009

Поддержка макета GWT осуществляется через подклассы 'Panel'. Некоторые из них, например DockPanel, ведут себя немного как макеты Swing (BorderLayout), но вы никогда не сможете взять код Swing и скомпилировать его в GWT.

Это распространенное заблуждение, когда речь идет о GWT. Он написан на Java исключительно потому, что Java имеет статический тип и широко поддерживается редакторами мирового класса. Тот факт, что он написан на Java, не имеет никакого отношения к желанию команды GWT разрешить вам переносить SWT / AWT / Swing на GWT. Сеть представляет собой среду, отличную от рабочей среды, и, поскольку ваш код в конечном итоге скомпилирован в javascript, никогда не имеет смысла брать какое-либо приложение Java Desktop и нажимать кнопку преобразования. Это то, что Applets пытался сделать много лет назад ... и мы все знаем, как это получилось;)

2 голосов
/ 18 апреля 2009

Нет, GWT не поддерживает менеджеров по расположению из Swing / AWT. Они не совместимы.

Источником несовместимости является то, что это абсолютно разные технологии с разными API. Swing / AWT основан на пикселях, а GWT - на HTML. Макеты GWT просто выводят различные теги HTML (элементы div / table / inline, ...), в то время как макеты Swing / AWT фактически вычисляют положение дочерних компонентов. В GWT положение детей вычисляется браузером, когда они отображаются.

0 голосов
/ 19 октября 2009

Если вам нужно веб-приложение Swing, рассмотрите AjaxSwing, но будьте готовы к задержке в сети и использованию ресурсов сервера. Я думаю, что как только появятся библиотеки для SVG / VML, мы увидим, что все больше материала переместится в Интернет. Если вы хотите увидеть JavaScript IDE, посмотрите Lively Kernel от Sun Labs. Люди пробовали портировать Swing на GWT? Кажется очевидным, что есть AjaxSwing, который может портировать множество Swing на GWT, возможно, не на Java2D. Возможно, какая-нибудь умная компания найдет способ конвертировать Swing в технологию веб-клиента.

0 голосов
/ 18 апреля 2009

Основная проблема в том, что World Wide Web не является настольным приложением, независимо от того, насколько вы этого хотите. Тут много вопросов, вот некоторые из них, которые приходят на ум:

  • WWW не имеет состояния, настольные приложения - нет. WWW обычно создается с помощью cookie-файлов, параметров URI и управления сеансами, и теперь, когда они у нас есть в течение нескольких десятилетий, мы в основном перешли к проблеме WWW с сохранением состояния / без сохранения состояния.

  • WWW-страницы ( в настоящее время ) описаны с некоторой формой XML и обычно CSS, в которых страница описывается как дерево. По сравнению с настольными приложениями, хотя, возможно, это почти то же самое с XML и простой кластеризацией компонентов, это не то же самое. Еще раз, одна из самых больших проблем заключается в том, что в DA эти компоненты, виджеты по своему характеру имеют состояние на уровне application , в то время как в WWW вы можете быть действительно состоящими на странице 1016 * уровень максимум и даже это требует JavaScript / AJAX.

Итак, прямое использование менеджеров компоновки запрещено. Но, допуская, что используемая вами структура веб-интерфейса позволяет это сделать, вы можете создать нечто, похожее на менеджеры по расположению. Хотя я не знаю конкретно о GWT, я считаю, что можно создать хотя бы простой менеджер макетов в JSP (или мой любимый Apache Wicket ) и заставить его вести себя так же, как это делают менеджеры макетов Swing.

Обратите внимание, что я действительно имею в виду воссоздание всей концепции менеджеров компоновки здесь в виде набора специализированных классов / еще много чего, как ответил Питер Штибрань, GWT не поддерживает их напрямую (на самом деле я ничего не слышал) кроме Swing), и я считаю, что было бы больше усилий создать упакованный / адаптер для Swing Layout Manager, а не просто создавать свои собственные подходящие для WWW.

...