在我的Swing應用程序中,我在框架中使用了物質外觀。但爲了設計目的,我想用本機系統的外觀和感覺展示一個JButton。我看到我可以應用特定的用戶界面,例如:我可以將系統外觀應用於一個控件嗎?
myButton.setUI(new javax.swing.plaf.metal.MetalButtonUI());
但是,我可以將默認系統UI應用於此按鈕嗎?
在我的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))
?
這將從當前活動的LaF(即物質按鈕UI)獲得UI。 – 2011-03-19 16:01:41
非常感謝...這就是我一直在尋找的。 – Brad 2011-03-20 12:11:52