2012-01-05 48 views
4

我正在使用OSX上的Java Swing應用程序,並且希望它儘可能像Mac一樣顯示。我已經完成了大部分期望的外觀,但還是有一件事情沒有解決。Java Swing Mac OSX標題欄

這是標題欄。許多本地OSX應用程序都有一個'高'標題欄和一個'工具欄按鈕',還有一個小按鈕用於切換右上角的'工具欄按鈕'的顯示/隱藏(請參閱FeedForAll應用程序的圖片,它是Java但使用SWT) 。

Top of FeedForAll application window showing Mac-Like title bar

任何想法如何可以做到這一點?任何幫助或指針將不勝感激。

+0

Mmmmmmmm,我以爲這是Java ... – Lyndon 2012-01-06 13:22:59

回答

2

在Swing中,本機OS組件實際上並未使用。 Mac上的默認「Aqua」外觀儘可能地與本機外觀相匹配,但它實際上只是用Java2D繪畫。所以,例如,默認按鈕的脈衝發光沒有實現。

有,你可以在窗口上設置影響其美觀一些客戶屬性,但「標題欄」似乎沒有一個選項:

http://developer.apple.com/library/mac/#technotes/tn2007/tn2196.html#//apple_ref/doc/uid/DTS10004439

一個辦法是切換到使用Quaqua的外觀和感覺。我自己並沒有使用它,但據說它比Mac更加忠實於Mac的外觀。它可以設置得到你想要的工具欄外觀的屬性:

http://www.randelshofer.ch/quaqua/guide/client_properties.html#JToolBar

+0

謝謝你。它確實看起來不錯,實際上解決了我遇到的其他一些問題。現在唯一的問題是它是否可以在Eclipse Indigo中使用WidowBuilder Pro。我會調查... – Lyndon 2012-01-06 13:22:09

+0

太棒了!它適用於WindowBuilder,只需要一個jar和幾行額外的代碼。小切換按鈕不在那裏,但標題欄和工具欄保險絲。現在我有一個非常類似於Mac的Java應用程序... – Lyndon 2012-01-06 15:58:52

+0

@RussellZahniser _「但是」標題工具欄「似乎不是一個選項:」_ - 我可能就是這樣:)試試這些行: - ''JFrame frame = new JFrame();' -'JRootPane root = frame.getRootPane();' -'root.putClientProperty(「apple.awt.brushMetalLook」,Boolean.TRUE);'似乎適用於所有幀,但不適用於Dialogs。我認爲'Quaqua'看起來像_Mac_的舊版本。 – Igor 2012-11-28 22:59:27

1

很抱歉,但我不認爲你可以使用擺動得到的工具欄控制按鈕。沒有appl-esqe系統屬性可以爲你繪製。嘗試「apple.awt.brushMetalLook」屬性,但據我記得它只有統一的工具欄和標題欄。 SWT似乎是你唯一的選擇。

此外,我不認爲你應該擔心這個UI元素。 從10.7(Lion)

以來,所有OS X用戶界面元素都刪除了此按鈕使用Lion時,大多數應用程序在右上角都有全屏圖標。 當使用Swing進行OS X編程時,我認爲你應該在某個時刻繪製一條線,讓它看起來完全是本地的。爲了補充一點,我認爲Mozilla客戶端是在Objective C/C++和一些Java(可能)爲Mac開發的。