【问题标题】:How much support does GWT have for Java layout managers?GWT 对 Java 布局管理器有多少支持?
【发布时间】:2009-04-18 10:25:22
【问题描述】:

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

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

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

【问题讨论】:

标签: java gwt layout-manager


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    不兼容的根源在于它们是具有不同 API 的完全不同的技术。 Swing/AWT 是基于像素的,而 GWT 呈现为 HTML。 GWT 布局仅输出不同的 HTML 标记(div/table/inline 元素,...),而 Swing/AWT 布局实际上计算子组件的位置。在 GWT 中,子项的位置由浏览器计算,当它们显示时。

    【讨论】:

    • 好的,谢谢。您不会碰巧知道任何解释不兼容性的来源吗? +1
    【解决方案3】:

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

    • WWW 是无状态的,桌面应用程序不是。 WWW 通常是通过 cookie、URI 参数和会话管理来实现有状态的,而现在我们已经使用了几十年了,我们基本上已经解决了 WWW 的有状态/无状态问题。

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

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

    请注意,我的意思是在这里将布局管理器的整个概念重新创建为一组专门的类/诸如此类,正如 Peter Štibraný 回答的那样,GWT 不直接支持它们(实际上我没有听到任何消息除了 Swing 之外),我相信为 Swing 布局管理器创建一个包装/适配器而不是仅仅为 WWW 创建你自己的、专有的会更努力。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-03
        • 1970-01-01
        • 1970-01-01
        • 2016-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多