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