From da0c562ac2a2e0cff87d14791400c26bcc4a382a Mon Sep 17 00:00:00 2001 From: Karl Tauber Date: Wed, 13 Nov 2019 10:48:20 +0100 Subject: [PATCH] FlatTestFrame: fixed exception when changing scale factor (when running in Java 8) --- .../java/com/formdev/flatlaf/IntelliJTheme.java | 4 ++++ .../formdev/flatlaf/testing/FlatTestFrame.java | 16 ++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java index 87873752..f26ee6e5 100644 --- a/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java +++ b/flatlaf-core/src/main/java/com/formdev/flatlaf/IntelliJTheme.java @@ -329,6 +329,10 @@ public class IntelliJTheme return theme.dark; } + public IntelliJTheme getTheme() { + return theme; + } + @Override public UIDefaults getDefaults() { UIDefaults defaults = super.getDefaults(); diff --git a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java index fb3e2973..196c224d 100644 --- a/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java +++ b/flatlaf-testing/src/main/java/com/formdev/flatlaf/testing/FlatTestFrame.java @@ -35,6 +35,7 @@ import com.formdev.flatlaf.FlatDarkLaf; import com.formdev.flatlaf.FlatIntelliJLaf; import com.formdev.flatlaf.FlatLaf; import com.formdev.flatlaf.FlatLightLaf; +import com.formdev.flatlaf.IntelliJTheme; import com.formdev.flatlaf.demo.LookAndFeelsComboBox; import com.formdev.flatlaf.demo.intellijthemes.*; import com.formdev.flatlaf.extras.*; @@ -240,14 +241,17 @@ public class FlatTestFrame Preferences.userRoot().node( PREFS_ROOT_PATH ).put( KEY_LAF, lafClassName ); - applyLookAndFeel( lafClassName, false ); + applyLookAndFeel( lafClassName, null, false ); } - private void applyLookAndFeel( String lafClassName, boolean pack ) { + private void applyLookAndFeel( String lafClassName, IntelliJTheme theme, boolean pack ) { EventQueue.invokeLater( () -> { try { // change look and feel - UIManager.setLookAndFeel( lafClassName ); + if( theme != null ) + UIManager.setLookAndFeel( IntelliJTheme.createLaf( theme ) ); + else + UIManager.setLookAndFeel( lafClassName ); // update all components FlatLaf.updateUI(); @@ -364,7 +368,11 @@ public class FlatTestFrame prefs.remove( KEY_SCALE_FACTOR ); } - applyLookAndFeel( UIManager.getLookAndFeel().getClass().getName(), true ); + LookAndFeel lookAndFeel = UIManager.getLookAndFeel(); + IntelliJTheme theme = (lookAndFeel instanceof IntelliJTheme.ThemeLaf) + ? ((IntelliJTheme.ThemeLaf)lookAndFeel).getTheme() + : null; + applyLookAndFeel( lookAndFeel.getClass().getName(), theme, true ); } private void updateScaleFactorComboBox() {