Могу ли я применить внешний вид системы только к одному элементу управления?
В своем приложении Swing я использую субстанцию look and feel в своих фреймах. Но для целей дизайна я хочу показать одну кнопку J с родным внешним видом системы. Я вижу, что могу применить определенный пользовательский интерфейс, например:
myButton.setUI( new javax.swing.plaf.metal.MetalButtonUI() );
Но могу ли я применить системный интерфейс по умолчанию к этой кнопке?
2 ответа:
Решение заключается в создании экземпляра LookAndFeel по умолчанию самостоятельно (что никогда не должно быть сделано в соответствии с Javadocs). Затем вы можете получить пользовательский интерфейс из LaF по умолчанию и применить его к вашей кнопке.
Если протестировать этот код в моем собственном приложении, которое также использует вещество, и он сработал:
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.