Могу ли я применить внешний вид системы только к одному элементу управления? - PullRequest
4 голосов
/ 18 марта 2011

В моем Swing-приложении я использую субстанцию ​​в своих кадрах.Но в целях дизайна я хочу показать один JButton с родным внешним видом системы.Я вижу, что могу применить определенный пользовательский интерфейс, например:

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

Но можно ли применить системный пользовательский интерфейс по умолчанию к этой кнопке?

Ответы [ 2 ]

3 голосов
/ 18 марта 2011

Решение состоит в том, чтобы создать экземпляр LookAndFeel по умолчанию самостоятельно (что никогда не должно выполняться в соответствии с Javadocs). Затем вы можете получить пользовательский интерфейс из LaF по умолчанию и применить его к своей кнопке.

Если тестировал этот код в моем собственном приложении, которое также использует 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));
}

Если вы хотите переключаться между различными оболочками Вещества, вы можете использовать SKIN_PROPERTY .

0 голосов
/ 18 марта 2011

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

...