GWT对Java布局管理器有多少支持?

时间:2009-04-18 10:25:23

标签: java gwt layout-manager

这似乎是一个隐含答案的问题,因此我找不到任何明确的内容。

Google Web Toolkit是否仅支持自定义布局管理器或Java布局管理器的子集?

例如,是否可能使用GroupLayout获取Java Swing应用程序并使其与GWT一起使用?

4 个答案:

答案 0 :(得分:6)

GWT布局支持是通过“Panel”的子类完成的。其中一些像'DockPanel'的行为有点像Swing布局(BorderLayout),但是你无法使用Swing代码并将其编译成GWT。

对于GWT,这是一种常见的误解。它是用Java编写的,因为Java是静态类型的,并且受到世界级编辑器的广泛支持。它用Java编写的事实与GWT团队允许您将SWT / AWT / Swing移植到GWT的任何愿望无关。 Web是与桌面不同的环境,因为您的代码最终编译成javascript,所以采用任何类型的Java Desktop应用程序并点击转换按钮都没有意义。这就是Applets多年前试图做的事情......我们都知道结果如何;)

答案 1 :(得分:2)

不,GWT不支持Swing / AWT的布局管理器。这些不兼容。

不兼容的来源是那些与不同API完全不同的技术。 Swing / AWT是基于像素的,而GWT呈现为HTML。 GWT布局只输出不同的HTML标签(div / table / inline elements,...),而Swing / AWT布局实际上确实计算子组件的位置。在GWT中,子项的位置由浏览器在显示时计算。

答案 2 :(得分:0)

最底线的问题是万维网不是桌面应用程序,无论你想要它多少。涉及到许多问题,这些是我们想到的一些问题:

  • WWW是无状态的,桌面应用程序则不是。 WWW通常通过cookie,URI参数和会话管理来建立状态,现在我们已经有几十年了,我们大多已经过了WWW的有状态/无状态问题。

  • WWW页面( nowadays )用某种形式的XML描述,通常是CSS,其中页面被描述为树。与桌面应用程序相比,虽然它可能与XML和普通组件集群几乎完全相同,但它不一样。再一次最大的问题之一是,在DA中,应用程序级别的小部件本质上是有状态的,而在WWW中,您可以在上真正有状态。页面级别最多,甚至需要JavaScript / AJAX。

因此,直接使用布局管理器是不行的。但是,假设您正在使用的Web UI框架允许它,您可以创建一些与布局管理器非常相似的东西。虽然我不是特别了解GWT,但我相信在JSP(或我最喜欢的Apache Wicket)中至少可以做一个简单的布局管理器,并使其行为与Swing布局管理器一样。

请注意,我的确意味着将布局管理器的整个概念重新创建为一组专门的类/诸如此类,正如PeterŠtibraný回答的那样,GWT不直接支持它们(实际上我没有听到任何声音)超越Swing确实)并且我相信为Swing布局管理器创建一个包装/适配器而不仅仅是为WWW创建自己的,适当的那些。

答案 3 :(得分:0)

如果您需要Swing Web应用程序,请考虑使用AjaxSwing,但要为网络延迟和消耗服务器资源做好准备。我想只要有SVG / VML库,我们就会看到更多东西转移到网上。如果您想查看JavaScript IDE,请查看Sun Labs的Lively Kernel。有人尝试将Swing移植到GWT吗?很明显,AjaxSwing可以将很多Swing移植到GWT,也许不是Java2D的东西。可能一些聪明的公司会弄清楚如何将Swing转换为Web客户端技术。