我可以将系统外观应用于一个控件吗?
问题描述:
在我的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。
答
myButton.setUI((ButtonUI)UIManager.getUI(myButton))
?
+0
这将从当前活动的LaF(即物质按钮UI)获得UI。 – 2011-03-19 16:01:41
非常感谢...这就是我一直在寻找的。 – Brad 2011-03-20 12:11:52