有沒有辦法改變一個擺動組件(例如JPanel)的所有實例的默認背景繪畫使用漸變背景進行繪製?或者我需要創建一個帶有漸變顏色的JPanel的擴展,然後在我的應用程序的任何地方使用它來代替JPanel?擺動組件的默認漸變背景
回答
恕我直言,只是繼承Swing組件並重寫它的paintComponent
方法來進行漸變繪畫會更容易。然後,如您所說,在整個應用程序中使用此自定義組件。
使用UI屬性可能會非常棘手,因爲它們在所有LaF中可能都不一致。
這是我最初的想法。不知道是否有更簡單的方法來做到這一點。特別是如果我想將漸變應用於多種組件類型,我需要繼承所有組件。 – 2012-03-09 14:41:31
@JeffStorey,在這種情況下,也許最好是繼承'JComponent'。 – Moonbeam 2012-03-09 14:47:05
我不確定這將如何幫助多種組件類型。假設我正在改變一個按鈕的背景,那麼如何繼承JComponent的幫助呢? – 2012-03-09 15:04:32
目前尚不完全清楚您打算的範圍。你的意思是類(所有JPanel實例都遵循新的繪圖方案),還是你的意思是所有組件在一個容器中(例如框架中的所有內容)?
根據組件類別,您可以鉤入的位置是外觀和感覺,以及在組件實例基礎上,可以使用paintComponent()方法,或者如果您需要替換現有組件的標準外觀,因爲您無法覆蓋該方法,因爲您無法控制該方法,因爲在創建組件後提供自己的UI類(查看Component.setUI)。
除了覆蓋paintComponent方法,這兩個方法都不易實現。對於大多數應用程序來說,簡單的方法是最好的:)
- 1. 獲取擺動組件的默認背景顏色
- 2. 背景漸變
- 3. 漸變背景
- 4. 什麼是Android EditText中背景的默認顏色漸變?
- 5. UINavigationBar與圖像和默認漸變背景與iOS5
- 6. 漸變背景上的文字漸變
- 7. 漸變背景UIScrollView
- 8. JPanel漸變背景
- 9. NSOutlineView漸變背景
- 10. 與背景漸變
- 11. Imagemagick背景漸變
- 12. CSS3背景漸變
- 13. Itextsharp漸變背景
- 14. 漸變背景iOS
- 15. Xamarin - 漸變背景
- 16. css漸變背景
- 17. CSS3漸變背景
- 18. Android漸變背景漸變爲透明
- 19. CSS中的動畫漸變背景
- 20. 顏色漸變的背景
- 21. PDF的漸變背景
- 22. tabBar中的漸變背景
- 23. TabBar的漸變背景?
- 24. JToolBar的漸變背景
- 25. UITableView的漸變背景
- 26. 背景漸變+單背景圖片
- 27. 變回默認的背景色DefaultTableCellRenderer
- 28. 標籤控件的漸變背景Powershell
- 29. 用默認的漸變和
- 30. 結合flexslider與背景漸變動畫
難道你只需要爲後臺JPanel執行此操作,然後使所有其他JPanel不透明? – 2012-03-09 14:43:04
@HovercraftFullOfEels,這也是另一種選擇。如果我想將它擴展到其他組件,我想我仍然需要擴展這些組件。 – 2012-03-09 15:03:26
@JeffStorey:也許,但不一定。您可以通過一些簡單的工廠方法來創建您的JPanel,這些方法將opaque設置爲false,或者您可以通過GUI將所有非基本JPanel設置爲非透明。 – 2012-03-09 15:10:30