我可以仅在一个控件上应用系统外观吗?

发布于 2024-10-23 23:50:12 字数 222 浏览 1 评论 0原文

在我的 Swing 应用程序中,我在框架中使用了 Substance 外观和感觉。但出于设计目的,我想展示一个具有本机系统外观和感觉的 JButton。我发现我可以应用特定的 UI,例如:

myButton.setUI( new javax.swing.plaf.metal.MetalButtonUI() ); 

但是我可以将默认的系统 UI 应用于此按钮吗?

In my Swing application I am using a Substance look and feel in my frames. But for design purposes I want to show one JButton with the native system look and feel. I see I can apply a specific UI like:

myButton.setUI( new javax.swing.plaf.metal.MetalButtonUI() ); 

But can I apply the default system UI to this button?

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

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

发布评论

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

评论(2

梦巷 2024-10-30 23:50:12

解决方案是自行实例化默认的 LookAndFeel(根据 Javadocs,永远不应该这样做)。然后您可以从默认的 LaF 获取 UI 并将其应用到您的按钮。

如果在我自己的应用程序中测试此代码,该应用程序也使用 Substance,并且它有效:

LookAndFeel laf = null;
try {
    String lafClassName = UIManager.getSystemLookAndFeelClassName();
    laf = (LookAndFeel) (Class.forName(lafClassName).newInstance());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}
if (laf != null) {
    laf.initialize();
    button.setUI((ButtonUI) laf.getDefaults().getUI(button));
}

如果您想在不同的 Substance 皮肤之间切换,您可以使用 SKIN_PROPERTY

The solution is instantiating the default LookAndFeel on your own (Which should never be done according to the Javadocs). Then you can get the UI from the default LaF and apply it to your button.

If tested this code within my own application, which also uses Substance, and it worked:

LookAndFeel laf = null;
try {
    String lafClassName = UIManager.getSystemLookAndFeelClassName();
    laf = (LookAndFeel) (Class.forName(lafClassName).newInstance());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
}
if (laf != null) {
    laf.initialize();
    button.setUI((ButtonUI) laf.getDefaults().getUI(button));
}

If you want to switch between different Substance skin, you can use SKIN_PROPERTY.

oО清风挽发oО 2024-10-30 23:50:12

myButton.setUI((ButtonUI)UIManager.getUI(myButton))

myButton.setUI((ButtonUI)UIManager.getUI(myButton))?

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