2009-06-29 67 views
8

您是否曾嘗試過使用Swing來結束課程變更,因爲它只是無法做到您想要的?Mac OS X上的Java Swing圖形用戶界面

我是Swing的新人,5年前只用於學校項目,但似乎Swing已經在提供更原生的外觀和感覺方面走了很長的路,非常多,所以我正在考慮使用它來開發Mac OS X上的應用程序的GUI。然而,在我做之前,我想知道是否有人遇到了阻礙他們使用Swing的問題。

只是把我的頭頂部,一些可能性:

  • 問題開發,看上去「正確」
  • 與本地應用程序錯誤的交互和窗口小部件
  • 性能問題的自定義組件(反應遲鈍,重繪問題)
  • 無法模仿原生行爲(如Dock互動)
+1

@alanlcode:我不會稱這些showstoppers,但是當你想支持OS X 10.4,5和6和32位Mac,沒有Java 6並且需要諸如好看*排序* JTable之類的東西時,它是一個*大量的工作。然後是存儲器pig issue問題和緩慢問題,GC在OS X上比在其他平臺上花費的時間更長,等等。我認爲切換但具有相同的Windows,OS X和Linux源代碼足以繼續使用Swing/Java :)另外,我考慮做更多的Obj-C,但是去XCode或者IntelliJ IDEA的其他任何東西都可以回到石器時代! – SyntaxT3rr0r 2010-03-13 04:24:32

回答

8

搖擺是不會給你的主機操作系統完美的保真度。 Sun根本無法投入必要的相當可觀的資源來做到這一點。我的印象是Swing已經好多了,但默認情況下它仍然會看起來不合適。

,甚至希望通過爲Mac應用程序所需的最低:

  • 包你的.jar中的.app
  • 設定爲L & F到系統默認
  • 集apple.laf。 useScreenMenuBar屬性爲true
    • 必須在任何UI代碼
  • 做到這一點

標準Java中不存在Dock交互。您將不得不使用Apple的Cocoa-Java橋接器,這不再支持。我不知道在OS X上JNI是多麼的易處理,這是唯一真正的選擇。

性能不應該是一個問題。拖動& Drop在OS X上可能與其他地方一樣多毛。

基本上,如果你明確地針對OS X,最好使用Objective-C。使用Java & Swing在OS X上構建應用程序遠非不可能,但它的許多工作使其看起來「原生」。

+0

感謝您的想法。我在Mac上嘗試Java的原始動力是能夠使用Clojure獲得一些真實的體驗,這似乎是一種有趣的語言。我已經決定在這個GUI中使用Objective-C,並且可能會在非圖形化的東西上處理Clojure。 – alanlcode 2009-06-30 05:33:36

4

@凱文++

使用可可可能是更好

  • 如果你希望它看起來完全像本地應用程序
  • 如果如果你打算你只針對Mac的

分發您的應用程序的Windows,Linux等Swing是一個不錯的選擇。它更好,但是像任何工具包一樣,仍然存在問題。你永遠不會得到一個真正的本地外觀和感覺,同樣的類似的UI工具包,聲稱是「跨平臺」。

Java開發的Apple指南可以找到here

6

正如凱文和約翰說,如果你只針對Mac用戶,你應該嘗試Objective-C,Cocoa和XCode。適用於Mac的developer tools可免費使用。

如果你想(或必須)使用Java和Swing你可以使用一些庫來創建一個圖形用戶界面,看起來很好在Mac上:

對於部署您的應用程序,您應該閱讀JarBundler文檔。

但是,在這種情況下,與dock和本機應用程序的交互非常有限。

其他一些很好的鏈接: