2008-11-18 38 views
3

是否有可能改變的Java LookAndFeel都沒有在真實世界環境修改程序?更改Java的LookAndFeel無需修改應用程序

我知道,理論上的答案是肯定的。我還創建了演示應用程序,即使在運行時也改變了外觀,並且工作正常。但是,當我創建了一個真正的應用程序有很多控制的LookAndFeel的變化並沒有真正的工作:

  • 不同lookandfeels有不同的bug(或奇怪的功能)。例如,其中一些爲JTextField和JFormattedTextField創建了相同的樣式,其中一些使用了不同的樣式。這種改變對用戶來說可能很煩人。
  • 控制大小是不一樣的(使用不同的字體,不同的邊界),所以有時窗口更改後看起來醜陋。
  • 鍵盤快捷鍵也可以不同。
  • ...

LookAndFeel中的變化後,我的應用程序(實際上不是改變我使用不同的皮膚相同的LookAndFeel嘗試的LookAndFeel)我總是要修改應用程序。不是一個很大的修改,但是很多小修改使得外觀和感覺都變得很困難。

我是不是很喜歡我嘗試過的lookfefeels(目前使用skinlf),或者在小演示程序中,lookandfeel的改變並不那麼容易?

UPDATE:我使用Swing和更改爲其他GUI庫是不可能的,我現在。

UPDATE2:在我看來,問題並不清楚。我知道如何改變外觀。我的問題是:是否有可能創建一個真正的應用程序來改變lookfefeel(或lookandfeel的皮膚)是一件容易的事情?目前,如果我改變外觀並不足以改變2或3行,我必須檢查整個應用程序並修復由外觀和外觀變化引起的相當多問題。 dhiller建議用更好的外觀替換skinkin。你能告訴我一個皮膚更換效果更好的皮膚外觀嗎?

回答

0

外觀和感覺應該更改字體和行爲,這是外觀和感覺系統的箴言:它應該像本機操作系統一樣運行,不同的操作系統有不同的顯示方式。我必須承認,「Java」的外觀和感覺(稱爲金屬或某種東西)通常比許多標準操作系統版本更加漂亮(這可能改變了自我上次使用Java以來​​的幾年)。我建議你默認使用操作系統的外觀和感覺,因爲如果打開文件菜單的行爲不像每個其他程序那樣運行(windows用戶不幸用於不一致的GUI,但Mac用戶期望所有程序行爲正常)。

+0

當然,我想使用一個lookandfeel,其行爲像本地操作系統(在我的情況下,Windows)。但是對於同一個操作系統來說,有很多外觀和感覺。假設我的用戶厭倦了當前的藍色設計,並且喜歡帶有不同圖標的綠色設計。 – asalamon74 2008-11-18 13:51:43

+0

然後您可以添加一個選項來更改默認值。窗戶LAF是藍色的?上次我檢查它是醜陋的灰色贏得2000年的風格,如果它現在實際上支持(eh.2)主題的Windows用戶可以改變他的Windows主題。爲什麼每個節目都有自己的主題? – 2008-11-18 14:21:17

2

是的,有不同的方式與一定要看啓動應用程序和下跌而無需修改應用程序的代碼。一個簡單的方法是在應用程序啓動時設置系統屬性。例如。如果你有一個shell腳本或批處理文件啓動應用程序,你剛剛從

java -jar yourapp.jar 

更改命令以

java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -jar yourapp.jar 

-Dswing.defaultlaf = com.sun.java.swing.plaf.gtk。 GTKLookAndFeel將設置GTKLookAndFeel使用的默認外觀。

還有一種方法是使用Java安裝的swing.properties文件。欲瞭解更多詳情,請看this

+0

這不回答我的問題。你能不能讀完我的整個問題。 – asalamon74 2008-11-18 13:45:12

1

通常,使用系統外觀以避免在用戶已經習慣了平臺外觀時引入新外觀而使用戶感到困惑,這是一個好主意。平臺的外觀和感覺可以通過以下代碼來實現。

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

無論如何,請參閱Changing the Look and Feel After Startup (java tutorial),這可能會幫助你。

順便說一句:也許你正在使用錯誤的佈局管理器?

0

如果您的最終目標是每個目標操作系統的本機外觀,您可以查看SWT。這將提供操作系統原生的小部件,這些小部件隨着操作系統的外觀和感覺而改變。

這樣,用戶不需要更改應用程序的選項,他們所需要做的就是修改其操作系統主題,並且更改將自動傳播到您的應用程序。

1

您是否嘗試過設置UIManager的外觀?開玩笑。但是,嚴重的是,如果您改變外觀和感覺,並且該應用看起來不正確,那是因爲您沒有以正確的方式使用LayoutManagers。最簡單的例子是使用null佈局管理器。這種方法不會是跨平臺的(極端例子)。作爲一種開發技術,您應該使用各種lookAndFeels進行所有Swing概念測試。否則,你會被誘惑在你的應用中「做事情」,這不是重點。 Really understanding the layouts can be hard work.

也就是說,鍵盤快捷鍵等一些事情總是需要特殊的處理。 Mac上的菜單需要特殊處理。等......然後就有應用程序打包了。

所以是的,Java在小型桌面演示中很棒,並且需要工作才能獲得真正的應用程序。