2009-11-20 55 views
4

SWT旨在跨平台,因此它可以在Mac上运行。问题在于它犯了麦克兰的基本罪 - 这是丑陋的。工具栏看起来不像Mac工具栏,状态栏看起来不像Mac状态栏等。在Mac上美化SWT应用程序

有没有人让SWT应用程序看起来更像Mac应用程序?例如,通过SWT中的'OS'类进行特定于平台的JNI调用?如果是这样,它有多困难?

(这个问题的产生是因为我们正在移植设计在Windows上运行现有的SWT应用程序)

感谢

回答

1

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

+0

是否有可能以某种方式将Swing零件烧成SWT? – 2011-10-27 19:12:26

+0

原来它是:http://www.eclipse.org/articles/article.php?file=Article-Swing-SWT-Integration/index.html – 2011-11-04 15:58:53

1

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

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

另外所有的Mac都预装了java,所以不用担心。

+2

原来的问题是关于SWT,而不是Swing。虽然你的信息是有用的(因此没有反对票),但它不是对原始问题的回答。 – 2009-11-20 17:43:19

5

这通常是(SWT直接与OS /框架提供窗口小部件)摇摆不SWT的问题 - 从报价甲温和简介SWT和JFace2

SWT是一个库,创建操作系统GUI控制的本机主机的Java 视图。它是主机 实现相关。这意味着 基于SWT的应用程序有几个 关键特征: 1. 它们看起来,行为和执行像“本机”应用程序。 2. 提供的小部件反映主机操作系统上提供的小部件(组件和控件)。 3.主机GUI库的任何特殊行为 在SWT GUI中反映为 。

预3.5里程碑曾经使用Carbon框架,现在3.5+支持32位/ 64位Cocoa框架1或许这已经引起了你的困惑?或者你可以更具体一些,给我们你使用的版本和一些截图/示例代码来重现?

我一直在OSX上开发基于SWT/Eclipse RCP的java应用程序一段时间,并没有发现和主要问题,看起来&感觉(因为它符合Eclipse的100%不符合Apple HID 3 UIG)

0

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

查看Patform.java的切换类和ExitAction.java的一个例子使用。

祝你好运吧:d

0

我创建了Mac OS的原生支持的工具栏第一碳素那么对于可可版本的SWT。当时我设法将eclipse透视切换器转移到本地工具栏。我没有Obj-C的经验,所以Cocoa版本比Carbon版本更有用,但是当所有人都被告知时,它并不是很难。在支持工具栏之后,我编写了一些代码来支持Alpha合成,本机图像透明度,硬件加速效果(CAAnimation)。对于这些,更难的部分是了解为什么Eclipse JNI生成器甚至无法生成某些API。原来,苹果提供的python bridge生成器尚未升级为Obj-C 2.0属性语法。当我解决这个问题时,我可以让SWT JNI Generator发现缺失的API。从那里,使用它们是很容易的部分。您可以在eclipse.org bugzilla服务器中找到这些内容的部分内容。

我不能说它总是很简单,但如果你已经知道Obj-C,那么你应该可以做任何你想要的。几天前,我又开始研究SWT Cocoa,以增加对ARGB图像的支持(与ImageData提供的有限透明支持相对)。

祝你好运。