2009-11-20 102 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提供的有限透明支持相對)。

祝你好運。