gpt4 book ai didi

java - Mac 的 RCP 应用程序 - Carbon 还是 Cocoa?

转载 作者:行者123 更新时间:2023-11-30 05:54:34 28 4
gpt4 key购买 nike

就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center寻求指导。




9年前关闭。




首先,我不是 Mac 开发者,也不是一个非常普通的 Mac 用户,所以请多多包涵。

我有一个相当大的 RCP 应用程序,主要针对 windows 和 linux,两者都运行良好。现在,尝试在 OSX(carbon x86)上运行它后,我发现它看起来很丑,一点也不像 Mac,而且使用起来也很笨拙。例如,这是一个最简单的东西,我什至看不出来,无论我做什么,这些按钮都不会按照我想要的方式放置:mac这就是它在 Windows 上的外观以进行比较(相同的代码库):win .

它降低了按钮的高度,没有把它们放在正确的位置,对齐是一团糟,等等。

这些只是冰山一角,可能还有更大的问题。

所以,我有两个问题:

1)我是否应该为使用 RCP 应用程序在 MAC 上的存在而烦恼?可能这是一个死胡同,实际上没有人这样做?毕竟苹果和java混的不多。

2)如果我选择它,我应该瞄准碳还是 cocoa ?我会期待最新的 mac 开发。我宁愿只选择其中一个,你会选择哪一个?标准是什么?

更新:

我为 cocoa 创建了发行​​版,所有这些奇怪的渲染问题都消失了。使用 eclispe rcp 3.7。一切看起来都很完美。

最佳答案

  • 这是一个主观的问题。其他人会这样做吗?当然,有不同程度的投资和关怀。你应该这样做吗?我想说这取决于您的用户想要和期望什么。
  • 使用 cocoa 。 Carbon是旧的 Mac OS 9 兼容 API,而 Cocoa是新的 Mac OS X API(以前称为 NextStep API)。从历史上看,Eclipse(以及因此的 SWT 和 RCP 应用程序)只支持 Carbon,但是 Eclipse 3.4 中添加了 Cocoa 支持。 (事实证明 Cocoa 事件循环和 SWT 事件循环很难集成,但是 Apple 邀请 SWT 团队到库比蒂诺坐下来让它工作。)

    也就是说,如果您的应用在两个平台之间看起来非常不同,我会感到惊讶。某些小部件周围肯定存在一些细微的 UI 差异 - 特别是对焦环看起来略有不同 - 但总的来说,您应该能够在 Carbon 或 Cocoa 中进行实际测试。但作为发布工具,我会使用 Cocoa。

  • 作为 Eclipse 插件(以前是 RCP 应用程序)的“Mac 专家”,如果您决定花一些时间来改善 Mac OS 体验,我可以提供一些建议:
  • Mac Human Interface Guidelines 可能值得一读.实际上,没有人(包括 Apple)将此文档视为牢不可破的法律,但这是将 Mac 应用程序视为 Mac 应用程序的良好开端。我怀疑 HIG 会这么说,但在按钮上显示图标并不是特别适合 Mac 的事情。 (它更有可能在工具栏中。)
  • Eclipse bugzilla 是您的 friend 。当你发现自己的头撞在 table 上想知道为什么ButtonSWT.ARROW在 Carbon 上 bit 看起来不正确,很高兴知道错误注释中可能存在解决方法。另外,您有时会让人发布可以集成的修复(因为作为 RCP 应用程序,您可以发布自己的 SWT 版本。)例如,use the proper window toolbar 的功能在 Mac OS 中首先出现在 bugzilla 中。
  • Mac OS 应用程序往往比 Windows 或 GTK 应用程序使用更多的空白。如果您只为 Windows 和 Linux 开发,则倾向于只关注布局中的填充和边距像素数。当您在 Mac OS 上运行此应用程序时,它往往看起来很奇怪并且皱巴巴的。最好根据系统建议设置边距和填充。您可以使用 IDialogConstants获取这些默认值(在 DLU 中),然后转换为像素。例如:
    int marginW = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_MARGIN);
    int marginH = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_MARGIN);

    int hSpacing = Dialog.convertHorizontalDLUsToPixels(fontMetrics, IDialogConstants.HORIZONTAL_SPACING);
    int vSpacing = Dialog.convertVerticalDLUsToPixels(fontMetrics, IDialogConstants.VERTICAL_SPACING);

    您可能希望使用 Dialog 和 Composite 基类来为您提供此功能,以便您拥有简单的访问器。
  • 回想一下,Windows 上的 OK 和 Cancel 按钮是从 Mac OS 和 GTK 倒退的。 Dialog类处理将默认(确定、是、接受等)按钮放在正确的位置。如果您开始在对话框按钮栏中放置奇怪的按钮,请务必注意 SWT 可能会为您重新排序它们。
  • 连接键监听器或加速器时不要假定 Control 键。 Apple 用户可能希望在这种情况下使用 Command 键(又名 Apple 键)。对于加速器,只需使用 M1而不是 CTRL .
  • 当您发布时,将您的应用程序重新打包到 .app . Mac 用户期望单个 .app有了里面的资源,他们不希望有一个带有 .app 的文件夹。和一堆其他不必要的文件夹。用于 Mac 的 PDE 构建的输出看起来就像所有其他平台一样 - 一个包含启动器的文件夹,在您的 plugins 旁边。和 features目录。作为构建后的步骤,您可以移动 pluginsfeatures .app 中的目录目录并编辑启动器以反射(reflect)更改。 (我想,互联网上流传着一个 perl 脚本,如果没有,我可以发布一个。)
  • 关于java - Mac 的 RCP 应用程序 - Carbon 还是 Cocoa?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9212477/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com