簡體   English   中英

如何在java swing中為所有類型的組件設置UI?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM