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

GWT对Java布局管理器有多少支持?,java,gwt,layout-manager,Java,Gwt,Layout Manager,这似乎是一个答案是隐含的问题,因此我找不到任何明确的答案 GoogleWebToolkit只支持自定义布局管理器,还是支持Java布局管理器的子集 例如,是否可以使用GroupLayout获取Java Swing应用程序并使其与GWT一起工作?否,GWT不支持Swing/AWT的布局管理器。这些不兼容 不兼容的根源在于,这些是使用不同API的完全不同的技术。Swing/AWT是基于像素的,而GWT渲染为HTML。GWT布局只输出不同的HTML标记(div/table/inline元素,…),而S

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

GoogleWebToolkit只支持自定义布局管理器,还是支持Java布局管理器的子集


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

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


不兼容的根源在于,这些是使用不同API的完全不同的技术。Swing/AWT是基于像素的,而GWT渲染为HTML。GWT布局只输出不同的HTML标记(div/table/inline元素,…),而Swing/AWT布局实际上计算子组件的位置。在GWT中,子对象的位置由浏览器在显示时计算。

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


不兼容的根源在于,这些是使用不同API的完全不同的技术。Swing/AWT是基于像素的,而GWT渲染为HTML。GWT布局只输出不同的HTML标记(div/table/inline元素,…),而Swing/AWT布局实际上计算子组件的位置。在GWT中,孩子的位置由浏览器在显示时计算。

最重要的问题是,无论您多么希望万维网成为桌面应用程序,它都不是桌面应用程序。其中涉及到许多问题,其中一些问题会浮现在脑海中:

  • WWW是无状态的,桌面应用程序不是。WWW通常是通过cookies、URI参数和会话管理来实现状态化的,现在我们已经使用了几十年,我们主要讨论了WWW的状态/无状态问题

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

因此,直接使用布局管理器是不可能的。但是,假设您使用的Web UI框架允许,您可以创建一些行为与布局管理器非常相似的东西。虽然我不知道GWT的具体情况,但我相信至少可以用JSP(或我最喜欢的)做一个简单的布局管理器,并让它像Swing布局管理器那样工作


请注意,我的真正意思是将布局管理器的整个概念重新创建为一组专门的类/诸如此类的东西,正如PeterŠtibraný回答的那样,GWT并不直接支持它们(事实上,除了Swing之外,我没有听说过其他任何东西)我相信,为Swing布局管理器创建一个包装好的/适配器,而不仅仅是为WWW创建您自己的、合适的应用程序,这将是一项更大的努力。

最重要的问题是,无论您多么希望万维网都不是桌面应用程序。其中涉及到许多问题,其中一些问题会浮现在脑海中:

  • WWW是无状态的,桌面应用程序不是。WWW通常是通过cookies、URI参数和会话管理来实现状态化的,现在我们已经使用了几十年,我们主要讨论了WWW的状态/无状态问题

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

因此,直接使用布局管理器是不可能的。但是,假设您使用的Web UI框架允许,您可以创建一些行为与布局管理器非常相似的东西。虽然我不知道GWT的具体情况,但我相信至少可以用JSP(或我最喜欢的)做一个简单的布局管理器,并让它像Swing布局管理器那样工作


请注意,我的真正意思是将布局管理器的整个概念重新创建为一组专门的类/诸如此类的东西,正如PeterŠtibraný回答的那样,GWT并不直接支持它们(事实上,除了Swing之外,我没有听说过其他任何东西)我相信,为Swing布局管理器创建一个包装的/适配器,而不仅仅是为WWW创建您自己的、合适的布局管理器,这将是一项更大的努力。

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


对于GWT,这是一个常见的错误理解。它是用Java编写的,这完全是因为Java是静态类型的,并且受到世界级编辑器的广泛支持。它是用Java编写的这一事实与GWT团队允许您将SWT/AWT/Swing移植到GWT的任何愿望无关。web是一个与桌面不同的环境,由于您的代码最终被编译成javascript,因此使用任何类型的Java桌面应用程序并点击convert按钮是没有意义的。许多年前,applet就是这么做的……我们都知道结果如何;)

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

这是一种常见的误解