【问题标题】:Java Swing GUIs on Mac OS XMac OS X 上的 Java Swing GUI
【发布时间】:2010-11-06 13:57:24
【问题描述】:

您是否曾经尝试使用 Swing 只是因为它无法满足您的要求而最终改变课程?

我对 Swing 还很陌生,5 年前只在学校项目中使用过它,但在提供更原生的外观和感觉方面,Swing 似乎已经走了很长一段路,以至于我正在考虑使用它为 Mac OS X 上的应用程序开发 GUI。不过,在此之前,我想看看是否有人遇到过任何阻碍他们使用 Swing 的问题。

就在我的脑海中,一些可能性:

  • 开发看起来“正确”的自定义组件时遇到问题
  • 与本机应用程序和小部件的不良交互
  • 性能问题(无响应、重绘问题)
  • 无法模仿原生行为(如 Dock 交互)

【问题讨论】:

  • @alanlcode:我不会称这些为炫技,但当你想支持 OS X 10.4、5 和 6 位和 32 位 Mac 时,这些 Mac 没有 Java 6 并且需要好看的东西 sortable JTable,这是一个很多的工作。然后是内存小猪问题和缓慢问题,在 OS X 上的 GC 似乎比在其他平台上花费的时间更长,等等。我考虑过切换,但在 Windows、OS X 和 Linux 上拥有相同的源代码就足以继续使用Swing/Java :) 另外,我考虑过做更多的 Obj-C,但转到 XCode 或 IntelliJ IDEA 的任何其他东西就像回到石器时代!

标签: java user-interface swing macos


【解决方案1】:

Swing 是一种不错的方式,或者您可以使用 SWT,或者两者兼而有之!

但无论哪种方式,都可以在 RCP 平台上使用它们。 (使用 Eclipse 或 Netbeans)。

看看这个:http://www.adam-bien.com/roller/abien/entry/eclipse_rcp_vs_netbeans_rcp

马可

【讨论】:

    【解决方案2】:

    Swing 不会为您提供完美的托管操作系统保真度。 Sun 根本无法为此投入大量必要的资源。我的印象是 Swing 变得更好了,但默认情况下仍然会显得格格不入。

    甚至希望通过 Mac 应用程序所需的最低要求:

    • 将你的 .jar 打包到一个 .app 中
    • 将 L&F 设置为系统默认值
    • 将 apple.laf.useScreenMenuBar 属性设置为 true
      • 必须在任何 UI 代码之前执行此操作

    标准 Java 中不存在 Dock 交互。您必须使用不再受支持的 Apple 的 Cocoa-Java 桥。我不知道 JNI 在 OS X 上的易用性如何,这是唯一真正的替代方案。

    性能应该不是问题。拖放在 OS X 上可能和在其他任何地方一样多毛。

    基本上,如果您明确针对 OS X,则最好使用 Objective-C。使用 Java 和 Swing 在 OS X 上构建应用程序远非不可能,但要使其看起来“原生”需要做很多工作。

    【讨论】:

    • 感谢您的想法。我在 Mac 上尝试 Java 的最初动力是能够获得一些使用 Clojure 的真实体验,这似乎是一种有趣的语言。我决定在这个 GUI 上使用 Objective-C,并且可能在非图形化的东西上处理 Clojure。
    【解决方案3】:

    @Kevin++

    使用 Cocoa 可能更好

    • 如果您希望它看起来完全像本机应用程序
    • 如果您只针对 Mac

    如果您打算为 Windows、Linux 等分发应用程序,Swing 是一个不错的选择。它更好,但就像在任何工具包中一样,仍然存在问题。你永远不会获得真正的原生外观和感觉,声称“跨平台”的类似 UI 工具包也是如此。

    可以在here 找到 Apple 的 Java 开发指南。

    【讨论】:

      【解决方案4】:

      正如 Kevin 和 John 所说,如果您只针对 Mac 用户,您应该尝试 Objective-C、Cocoa 和 XCode。 Mac 版developer tools 可免费使用。

      如果您想(或必须)使用 Java 和 Swing,您可以使用一些库来创建在 Mac 上看起来不错的 GUI:

      要部署您的应用程序,您应该阅读JarBundler 文档。

      但是,在这种情况下,与 Dock 和本机应用程序的交互非常有限。

      其他一些不错的链接是:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-04
        • 2010-09-11
        • 1970-01-01
        • 1970-01-01
        • 2012-03-22
        相关资源
        最近更新 更多