SWT旨在实现跨平台,因此可以在Mac上运行。问题是它承认了麦克兰的主要罪行 - 它是UGLY。工具栏看起来不像Mac工具栏,状态栏看起来不像Mac状态栏等等。
有没有人有使SWT应用程序看起来更像Mac应用程序的经验?例如,通过SWT中的“OS”类进行特定于平台的JNI调用?如果是这样,那有多难?
(出现这个问题是因为我们正在考虑移植一个旨在在Windows上运行的现有SWT应用程序)
由于
答案 0 :(得分:5)
这通常是Swing而不是SWT的问题(SWT直接链接到OS /框架提供的小部件) - 引自对SWT和JFace的简要介绍 2:
SWT是一个创建Java的库 本机主机操作的视图 系统GUI控件。这是主持人 实现有关。这意味着 基于SWT的应用程序有几个 关键特征: 1. 他们看起来,行动和执行“本机”应用程序。 2. 提供的小部件反映了主机操作系统上提供的小部件(组件和控件)。 3.任何特殊行为 反映了主机GUI库的内容 在SWT GUI中。
前3.5里程碑曾用过碳框架,现在3.5+支持32 / 64bit Cocoa框架1所以这可能会让你感到困惑?或者你可以更具体,给我们你使用的版本和一些截图/示例代码来重现?
我一直在OSX上开发基于SWT / Eclipse RCP的java应用程序,并且没有找到外观和感觉的主要问题(因为它不会100%符合Apple HID 3因为它符合Eclipse UIG)
答案 1 :(得分:1)
我能提供的最好的方法是使用免费且处于不同成熟阶段的MacWidgets或Quaqua。坏消息是他们都是基于Swing的,这可能不是你想听到的。
答案 2 :(得分:1)
您可以轻松地使应用程序看起来像mac应用程序一样。 Apple提供了一个名为JarBundler的应用程序,您可以将菜单项放在它们所属的位置,它还可以构建一个双击可执行文件,并且您可以设置一个图标。
Mac OS X上的Swing组件看起来很像它们的cocoa组件,对于OS X,你可以设置一些特殊的标志,使它们就像它们的可可计数器部分一样,例如你可以为JTextField设置一个标志并制作它看起来像可可搜索领域。
此外,所有Mac都预装了java,这样就不用担心了。
答案 3 :(得分:0)
我经常使用奇怪的“平台查询”来调整应用。例如,它不是真正关于打扮应用程序和更多关于(例如)使退出菜单选项在Mac上说“退出”和“在Windows上退出。有一些Mac风格的指导方针我不能像这样但它可能会有所帮助。
有关切换类的信息,请参见Patform.java,有关其使用示例,请参见ExitAction.java。
祝你好运:D
答案 4 :(得分:0)
我首先为Carbon创建了对Mac OS本机工具栏的支持,然后为可可版本的SWT创建了支持。当时我设法将eclipse透视切换器转移到本机工具栏。我没有Obj-C经验,所以Cocoa版本比Carbon版本更多,但是当所有人都被告知时,它并不是很难。在支持工具栏后,我编写了一些代码来支持Alpha Compositing,原生图像透明度,硬件加速效果(CAAnimation)。对于这些,更难的部分是理解为什么Eclipse JNI生成器甚至无法生成某些API。原来苹果提供的python bridge生成器尚未针对Obj-C 2.0 Property语法进行升级。当我修复它时,我能够让SWT JNI Generator吐出丢失的API。从那里开始,使用它们很容易。您可以在eclipse.org bugzilla服务器中找到部分内容。
我不能说它总是很简单,但如果你已经知道Obj-C,那么你应该能够做任何你想做的事情。几天前,我再次开始研究SWT Cocoa,以增加对ARGB图像的支持(与ImageData提供的有限透明度支持相反)。
祝你好运。