【问题标题】:Java Swing 1.6 to 1.5Java Swing 1.6 到 1.5
【发布时间】:2009-03-10 09:59:00
【问题描述】:

是否可以将使用 Java 1.6 中的 Swing 开发的 UI 移植到 Java 1.5 而无需重新全部重写?

【问题讨论】:

  • 试一试,解决问题。你的问题太笼统了。我们不知道您使用了哪些仅限 java6 的功能。一般来说......是的,这是可能的。
  • 谢谢。我发现所有破坏代码的都是 javax.swing.GroupLayout。现在是时候找到可以替代这个的东西了。
  • 查看我的回复,了解有关 Group Layout 和 JDK5 的一些指示。

标签: java swing


【解决方案1】:

只是为了详细说明duffymo所说的:

Java 旨在向后兼容。 IE。如果你在 1.5 中写了一些东西,你可以在 1.6 中运行它。 当然,这是有限制的(例如,像 assert 这样的新保留字会破坏它)但总的来说它可以正常工作。

如果你走另一条路,那就更危险了。 您当然不需要重写所有代码,但您可能使用了自 1.6 起才提供的功能。这些特性可以是新类或现有类的新方法。

另一件事是二进制代码级别。您可以将编译器设置为运行 1.6 以创建 1.5 甚至 1.4 的代码。

请注意,您的 1.6 编译器肯定会针对 1.6 rt.jar 进行编译。这意味着在您使用 1.5 实际运行或编译代码之前,您不会注意到缺少的类或方法。

设置合规级别仅意味着 1.5 JRE 将理解代码,而不是所有“默认”类都可用。

我对 1.6 的细节没有任何经验,但我认为虽然 1.5 添加了许多新的语言功能(并非全部与 1.4 兼容),但 1.6 更像是一个维护版本。

【讨论】:

    【解决方案2】:

    如果您只使用了两者之间共有的功能,我会说是的。它应该是向后兼容的。添加 JDK 6 特定功能的那一刻,您必须将其删除。

    【讨论】:

      【解决方案3】:

      由于 Swing 在过去十年中没有太大变化,因此您应该不会遇到很多问题。 Java 6 与 Java 5 相比也没有太多新特性(主要是内部清理)。

      我建议尝试使用 Java 5 编译您的应用程序并运行它。它可能开箱即用。

      【讨论】:

      • JDK 6 中的 Swing 增加了一些附加功能,例如对系统通知区域、基线、组布局的支持……幸运的是,它们中的大多数是从外部库集成的,应该仍然可用。
      • 如果一切都失败了,您也许可以为 Swing 6 添加额外的类并在 Java 5 下运行它们。当然,除非它们使用 DLL。但是我发现Java中有些问题,蛮力的方法效果很好。
      • 我不确定这是否适用于摇摆箱。 JComponent 中有新的方法(如 getBaseline),供 Group 布局使用。如果您只提取组布局,它将不起作用。并更换整个 Swing ......好吧,也许你可以让它工作,但由于包装密封,这并不容易。
      • 好的,这有点超出了原始问题的要求。这完全取决于客户端代码使用了多少 Swing 6 功能。如果没有,那就只能重新编译运行了。
      【解决方案4】:

      如果您想确保您的代码在 1.5 环境中运行,请将您的 IDE 设置为针对 1.5 JDK 构建,这样您就不会无意中使用任何新 API。

      【讨论】:

        猜你喜欢
        • 2011-07-08
        • 1970-01-01
        • 2012-01-31
        • 2011-07-02
        • 1970-01-01
        • 2012-06-10
        • 2011-10-05
        • 2012-09-04
        • 1970-01-01
        相关资源
        最近更新 更多