Dim*_*ima 2 java macos rcp swt
首先,我不是Mac开发人员和非常随意的Mac用户,所以请忍受我的问题.
我有一个相当大的RCP应用程序,主要针对Windows和Linux,适用于两者.现在,我试图在OSX(碳x86)上运行它,我发现它看起来很丑陋,没有任何像Mac一样,使用起来很笨拙.例如,这是一个我不能直视的最简单的事情,无论我做什么,这些按钮都不会像我希望的那样坐着:
这就是它在Windows上的比较(相同的代码库):
.
它会削减按钮高度,不会将它们放置正确,对齐是一团糟等.
这些只是冰山一角,可能存在更大的问题.
所以,我有两个问题:
1)我是否应该为使用RCP应用的MAC存在而烦恼?可能是死路一条,没有人真正做到了吗?毕竟苹果和java混合不多.
2)如果我这样做,我应该针对碳或可可吗?对于最新的mac开发,我想展望未来.我认为中心只会选择其中一个,你会选哪一个?标准是什么?
更新:
我已经为可可创建了分发,所有这些奇怪的渲染问题都消失了.使用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团队到Cupertino坐下来让它工作.)
也就是说,如果您的应用程序在两个平台之间看起来非常不同,我会感到惊讶.在一些小部件周围肯定存在一些微小的UI差异 - 特别是焦点环看起来略有不同 - 但总的来说,你应该真实地能够在Carbon或Cocoa中进行测试.但作为一种释放载体,我会使用Cocoa.
作为Eclipse插件(以及之前的RCP应用程序)中的"Mac人",如果您决定投入一些时间来改善Mac OS体验,我可以提供一些指示:
它可能值得阅读Mac 人机界面指南.实际上,没有人(包括Apple)将此文档视为不可破解的法律,但将Mac应用程序视为Mac应用程序是一个良好的开端.我怀疑HIG是这么说的,但在按钮上放置图标并不是一件特别的Mac-ish事情.(它更可能在工具栏中.)
Eclipse bugzilla是你的朋友.当你发现自己打败你的头撞在桌子不知道为什么Button与SWT.ARROW位看起来不正确的碳,这是很好的了解,有可能是在错误注释的解决方法.此外,您有时会让人们发布可以集成的修补程序(因为作为RCP应用程序,您可以发布自己的SWT版本.)例如,在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);
Run Code Online (Sandbox Code Playgroud)
您可能希望使用Dialog和Composite基类为您提供此类,以便为此提供简单的访问器.
回想一下,Windows上的OK和Cancel按钮是Mac OS和GTK的后退按钮.本Dialog类处理把默认的(好吧,是,接受等)按钮,在你正确的位置.如果您开始在对话框按钮栏中添加奇怪的按钮,请务必注意SWT可能会为您重新排序.
在连接关键监听器或加速器时不要假设Control键.在这种情况下,Apple用户可能希望使用Command键(也就是Apple键).对于加速器,只需使用M1而不是CTRL.
当您发布时,将您的应用程序重新打包到.app.Mac用户期望其中.app包含资源,他们不希望文件夹中包含.app一堆其他不必要的文件夹.来自Mac的PDE构建的输出看起来就像其他所有平台一样 - 一个带有启动器的文件夹,位于您plugins和features目录旁边.作为生成后步骤,您可以移动plugins和features目录内的.app目录和编辑发射器以反映更改.(有一个perl脚本浮动在互联网上,我想,如果不是,我可以发布一个.)
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |