繁体   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