--- old/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java 2014-04-17 17:08:37.891088000 +0400 +++ new/src/share/classes/com/sun/java/swing/plaf/windows/DesktopProperty.java 2014-04-17 17:08:37.099987500 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2009, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -100,16 +100,23 @@ * Updates the UIs of all the known Frames. */ private static void updateAllUIs() { + invalidateStyle(); + Frame appFrames[] = Frame.getFrames(); + for (Frame appFrame : appFrames) { + updateWindowUI(appFrame); + } + } + + /** + * Invalidates the current style in WindowsLookAndFeel. + */ + private static void invalidateStyle() { // Check if the current UI is WindowsLookAndfeel and flush the XP style map. // Note: Change the package test if this class is moved to a different package. Class uiClass = UIManager.getLookAndFeel().getClass(); if (uiClass.getPackage().equals(DesktopProperty.class.getPackage())) { XPStyle.invalidateStyle(); } - Frame appFrames[] = Frame.getFrames(); - for (Frame appFrame : appFrames) { - updateWindowUI(appFrame); - } } /** @@ -207,6 +214,8 @@ protected void updateUI() { if (!isUpdatePending()) { setUpdatePending(true); + // JDK-8039383: invalidate the cached style as soon as possible + invalidateStyle(); Runnable uiUpdater = new Runnable() { public void run() { updateAllUIs();