我创建了自己的MyScrollbarUI
类,以便在我的应用程序中显示自定义滚动条。现在我必须做
scrollPane.getHorizontalScrollBar().setUI(new MyScrollbarUI());
scrollPane.getVerticalScrollBar().setUI(new MyScrollbarUI());
在我使用的任何ScrollPane
上。
是否有可能告诉Swing
它应该在任何滚动条上使用MyScrollbarUI
。也许是通过UIManager
?
答案 0 :(得分:13)
UIManager.put("ScrollBarUI", MyScrollbarUI.class.getName());
应该这样做。
您需要在UI类中使用public static ComponentUI createUI(JComponent c)
方法,并返回UI的实例。
答案 1 :(得分:3)
尝试将自定义UI类设置为UIManager
的ScrollPaneUI
属性。默认情况下,javax.swing.plaf.metal.MetalScrollPaneUI
会将其更改为您的自定义类。
答案 2 :(得分:2)
UIManager.put("ScrollBarUI", "fully-qualified-className-of-customUI")
这将有效地为所有LAF安装相同的委托类,除了扩展自定义ui-class之外,所有LAF可能会产生不太理想的视觉效果。严格来说,每个LAF需要一个自定义类
答案 3 :(得分:0)
通过扩展JScrollPane创建新的ScrollPane组件,并告诉您的自定义ScrollPane使用MyScrollbarUI。然后修改所有代码以使用自定义ScrollPane而不是JScrollPane。