美化Mac上的SWT应用程序

时间:2009-11-20 10:17:18

标签: java macos swt

SWT旨在实现跨平台,因此可以在Mac上运行。问题是它承认了麦克兰的主要罪行 - 它是UGLY。工具栏看起来不像Mac工具栏,状态栏看起来不像Mac状态栏等等。

有没有人有使SWT应用程序看起来更像Mac应用程序的经验?例如,通过SWT中的“OS”类进行特定于平台的JNI调用?如果是这样,那有多难?

(出现这个问题是因为我们正在考虑移植一个旨在在Windows上运行的现有SWT应用程序)

由于

5 个答案:

答案 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)

我能提供的最好的方法是使用免费且处于不同成熟阶段的MacWidgetsQuaqua。坏消息是他们都是基于Swing的,这可能不是你想听到的。

答案 2 :(得分:1)

您可以轻松地使应用程序看起来像mac应用程序一样。 Apple提供了一个名为JarBundler的应用程序,您可以将菜单项放在它们所属的位置,它还可以构建一个双击可执行文件,并且您可以设置一个图标。

Mac OS X上的Swing组件看起来很像它们的cocoa组件,对于OS X,你可以设置一些特殊的标志,使它们就像它们的可可计数器部分一样,例如你可以为JTextField设置一个标志并制作它看起来像可可搜索领域。

此外,所有Mac都预装了java,这样就不用担心了。

答案 3 :(得分: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提供的有限透明度支持相反)。

祝你好运。

答案 4 :(得分:0)

我经常使用奇怪的“平台查询”来调整应用。例如,它不是真正关于打扮应用程序和更多关于(例如)使退出菜单选项在Mac上说“退出”和“在Windows上退出。有一些Mac风格的指导方针我不能像这样但它可能会有所帮助。

有关切换类的信息,请参见Patform.java,有关其使用示例,请参见ExitAction.java

祝你好运:D