这似乎是一个答案是隐含的问题,因此我找不到任何明确的东西。
Google Web Toolkit 是否仅支持自定义布局管理器或 Java 布局管理器的子集?
例如,是否可以使用 GroupLayout 获取 Java Swing 应用程序并使其与 GWT 一起使用?
这似乎是一个答案是隐含的问题,因此我找不到任何明确的东西。
Google Web Toolkit 是否仅支持自定义布局管理器或 Java 布局管理器的子集?
例如,是否可以使用 GroupLayout 获取 Java Swing 应用程序并使其与 GWT 一起使用?
GWT 布局支持是通过“Panel”的子类完成的。其中一些像 'DockPanel' 的行为有点像 Swing 布局 (BorderLayout),但你永远无法获取 Swing 代码并将其编译成 GWT。
当谈到 GWT 时,这是一个常见的误解。它是用 Java 编写的,仅仅是因为 Java 是静态类型的,并且受到世界级编辑器的广泛支持。它是用 Java 编写的,这与 GWT 团队允许您将 SWT/AWT/Swing 移植到 GWT 的愿望无关。Web 是与桌面不同的环境,并且由于您的代码最终编译为 javascript,因此使用任何类型的 Java 桌面应用程序并点击转换按钮是没有意义的。这就是 Applets 多年前尝试做的事情……我们都知道结果如何;)
不,GWT 不支持来自 Swing/AWT 的布局管理器。这些不兼容。
不兼容的根源在于它们是具有不同 API 的完全不同的技术。Swing/AWT 是基于像素的,而 GWT 呈现为 HTML。GWT 布局仅输出不同的 HTML 标记(div/table/inline 元素,...),而 Swing/AWT 布局实际上计算子组件的位置。在 GWT 中,子项的位置由浏览器在显示时计算。
最重要的问题是万维网不是桌面应用程序,无论您多么希望它是。涉及的问题很多,以下是一些浮现在脑海中的问题:
WWW 是无状态的,桌面应用程序不是。WWW 通常是通过 cookie、URI 参数和会话管理来实现有状态的,而现在我们已经使用了几十年,我们主要讨论了 WWW 的有状态/无状态问题。
WWW 页面(现在)用某种形式的 XML 和通常的 CSS 来描述,其中页面被描述为一棵树。与桌面应用程序相比,虽然它可能对 XML 和普通组件集群做几乎相同的事情,但它只是不一样。最大的问题之一是在 DA 中,这些组件在应用程序级别上本质上是有状态的,而在 WWW 中,您最多可以在页面级别上真正有状态,甚至需要 JavaScript/AJAX。
因此,直接使用布局管理器是不行的。但是,假设您使用的 Web UI 框架允许它,您可能会创建一些行为与布局管理器非常相似的东西。虽然我不具体了解 GWT,但我相信至少可以在 JSP(或我最喜欢的Apache Wicket)中做一个简单的布局管理器,并使其行为与 Swing 布局管理器一样。
请注意,我的意思是在这里将布局管理器的整个概念重新创建为一组专门的类/诸如此类,正如 Peter Štibraný 回答的那样,GWT 不直接支持它们(事实上,除了 Swing 之外,我没有听说过任何东西) 并且我相信为 Swing 布局管理器创建一个包装/适配器而不是仅仅为 WWW 创建您自己的、专有的会更努力。
如果您想要一个 Swing Web 应用程序,请考虑 AjaxSwing,但要为网络延迟和消耗服务器资源做好准备。我认为一旦有了 SVG/VML 库,我们就会看到更多的东西转移到网络上。如果您想查看 JavaScript IDE,请查看 Sun Labs 的 Lively Kernel。人们是否尝试过将 Swing 移植到 GWT?很明显,有很多 Swing 可以移植到 GWT 的 AjaxSwing,只是可能不是 Java2D 的东西。可能一些聪明的公司会想出如何将 Swing 转换为 Web 客户端技术。