[英]How to set UI for all Components of a type in java swing?
我創建了自己的MyScrollbarUI
類,以便在我的應用程序中顯示自定義滾動條。 現在我必須這樣做
scrollPane.getHorizontalScrollBar().setUI(new MyScrollbarUI());
scrollPane.getVerticalScrollBar().setUI(new MyScrollbarUI());
在我使用的任何ScrollPane
。
是否有可能告訴Swing
它應該在任何滾動條上使用MyScrollbarUI
。 也許通過UIManager
?
UIManager.put("ScrollBarUI", MyScrollbarUI.class.getName());
應該做的伎倆。
您需要在UI類中使用public static ComponentUI createUI(JComponent c)
方法,返回UI的實例。
嘗試將自定義UI類作為UIManager
ScrollPaneUI
屬性。 默認情況下,它是javax.swing.plaf.metal.MetalScrollPaneUI
將其更改為您的自定義類。
從技術上講,告訴UIManager哪個代表使用(如@Harry Joy已經提到過的那樣)就好了,就像
UIManager.put("ScrollBarUI", "fully-qualified-className-of-customUI")
這將有效地為所有LAF安裝相同的委托類,這可能導致除了擴展自定義ui-class之外的所有視覺效果都不是最佳視覺效果。 嚴格來說,每個LAF需要一個自定義類
通過擴展JScrollPane創建新的ScrollPane組件,並告訴您的自定義ScrollPane使用MyScrollbarUI。 然后修改所有代碼以使用自定義ScrollPane而不是JScrollPane。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.