如何在java swing中为某个类型的所有组件设置UI?

发布于 2024-12-02 05:29:55 字数 376 浏览 1 评论 0 原文

我创建了自己的 MyScrollbarUI 类,以便在我的应用程序中具有自定义滚动条外观。现在我必须

scrollPane.getHorizontalScrollBar().setUI(new MyScrollbarUI());
scrollPane.getVerticalScrollBar().setUI(new MyScrollbarUI());

对我使用的任何 ScrollPane 进行操作。

是否可以以某种方式告诉 Swing 它应该在任何滚动条上使用 MyScrollbarUI 。也许通过UIManager

I created my own MyScrollbarUI class to have a custom scrollbar look in my application. Now I have to do

scrollPane.getHorizontalScrollBar().setUI(new MyScrollbarUI());
scrollPane.getVerticalScrollBar().setUI(new MyScrollbarUI());

on any ScrollPane I use.

Is it somehow possible to tell Swing that it should use MyScrollbarUI on any scrollbar. Maybe via the UIManager?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

栀子花开つ 2024-12-09 05:29:55
UIManager.put("ScrollBarUI", MyScrollbarUI.class.getName());

应该可以解决问题。

您的 UI 类中需要有一个 public static ComponentUI createUI(JComponent c) 方法,该方法返回 UI 的实例。

UIManager.put("ScrollBarUI", MyScrollbarUI.class.getName());

should do the trick.

You need to have a public static ComponentUI createUI(JComponent c) method in your UI class, returning an instance of your UI.

潜移默化 2024-12-09 05:29:55

尝试将自定义 UI 类作为 ScrollPaneUI 属性“nofollow”>UIManager。默认情况下,它是javax.swing.plaf.metal.MetalScrollPaneUI,将其更改为您的自定义类。

Try putting your custom UI class as ScrollPaneUI property of UIManager. By default it is javax.swing.plaf.metal.MetalScrollPaneUI change it to your custom class.

若无相欠,怎会相见 2024-12-09 05:29:55

从技术上讲,这很容易告诉 UIManager 使用哪个委托(正如 @Harry Joy 已经提到的),就像

 UIManager.put("ScrollBarUI", "fully-qualified-className-of-customUI") 

这将为所有 LAF 有效安装相同的委托类,这可能会导致除您扩展的那个之外的所有 LAF 都达不到最佳视觉效果。自定义 ui 类来自。严格来说,每个 LAF 需要一个自定义类

technically, it's as easy as to tell the UIManager which delegate to use (as @Harry Joy already mentioned), like

 UIManager.put("ScrollBarUI", "fully-qualified-className-of-customUI") 

This will effectively install the same delegate class for all LAFs which might result less than optimal visuals in all except the one you extended your custom ui-class from. Strictly, you need one custom class per LAF

貪欢 2024-12-09 05:29:55

通过扩展 JScrollPane 来创建新的 ScrollPane 组件,并告诉您的自定义 ScrollPane 使用 MyScrollbarUI。然后修改所有代码以使用自定义 ScrollPane 而不是 JScrollPane。

Make new ScrollPane component by extending JScrollPane and tell your custom ScrollPane to use MyScrollbarUI. Then modify all your code to use your custom ScrollPane instead of JScrollPane.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文