diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java index eb13d56bd..0179fa7a9 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/FlatLaf.java @@ -29,6 +29,7 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.lang.ref.WeakReference; +import java.lang.reflect.Method; import java.util.List; import java.util.function.Consumer; import java.util.logging.Level; @@ -190,17 +191,22 @@ public void uninitialize() { */ private BasicLookAndFeel getBase() { if( base == null ) { - if( SystemInfo.IS_MAC ) { - // use Mac Aqua LaF as base + if( SystemInfo.IS_MAC) { String aquaLafClassName = "com.apple.laf.AquaLookAndFeel"; try { - base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).newInstance(); + if (SystemInfo.IS_JAVA_9_OR_LATER) { + Method m = UIManager.class.getDeclaredMethod("createLookAndFeel", String.class); + base = (BasicLookAndFeel) m.invoke(UIManager.class, "Mac OS X"); + } else { + base = (BasicLookAndFeel) Class.forName( aquaLafClassName ).getDeclaredConstructor().newInstance(); + } } catch( Exception ex ) { LOG.log( Level.SEVERE, "FlatLaf: Failed to initialize base look and feel '" + aquaLafClassName + "'.", ex ); throw new IllegalStateException(); } - } else + } else { base = new MetalLookAndFeel(); + } } return base; }