我可以将系统外观应用于一个控件吗?

问题描述:

在我的Swing应用程序中,我在框架中使用了物质外观。但为了设计目的,我想用本机系统的外观和感觉展示一个JButton。我看到我可以应用特定的用户界面,例如:我可以将系统外观应用于一个控件吗?

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

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

解决方案是自行实例化默认LookAndFeel(根本不应该根据Javadoc进行)。然后,您可以从默认的LaF获取UI并将其应用于您的按钮。

如果测试自己的应用程序,它也使用物质中的代码,它的工作:

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)); 
} 

如果你想不同的物质皮肤之间切换,可以使用SKIN_PROPERTY

+0

非常感谢...这就是我一直在寻找的。 – Brad 2011-03-20 12:11:52

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

+0

这将从当前活动的LaF(即物质按钮UI)获得UI。 – 2011-03-19 16:01:41