The solution is instantiating the default LookAndFeel on your own (Which should never be done according to the Javadocs). Then you can get the UI from the default LaF and apply it to your button.
If tested this code within my own application, which also uses Substance, and it worked:
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));
}
If you want to switch between different Substance skin, you can use SKIN_PROPERTY.