--- old/src/java.desktop/share/classes/javax/swing/plaf/ComponentUI.java 2016-01-25 00:13:12.000000000 +0400 +++ new/src/java.desktop/share/classes/javax/swing/plaf/ComponentUI.java 2016-01-25 00:13:11.000000000 +0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2016, 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 @@ -30,10 +30,10 @@ import javax.accessibility.Accessible; import java.awt.Component; -import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics; -import java.awt.Insets; +import javax.swing.UIManager; +import sun.swing.SwingUtilities2; /** @@ -52,6 +52,9 @@ * */ public abstract class ComponentUI { + + private TextUIDrawing textUIDrawing; + /** * Sole constructor. (For invocation by subclass constructors, * typically implicit.) @@ -85,6 +88,14 @@ * @see javax.swing.JComponent#updateUI */ public void installUI(JComponent c) { + + if (textUIDrawing == null || textUIDrawing instanceof UIResource) { + textUIDrawing = (TextUIDrawing) UIManager.get("uiDrawing.text"); + } + + if (textUIDrawing == null) { + textUIDrawing = SwingUtilities2.DEFAULT_UI_TEXT_DRAWING; + } } /** @@ -113,6 +124,9 @@ * @see javax.swing.JComponent#updateUI */ public void uninstallUI(JComponent c) { + if (textUIDrawing instanceof UIResource) { + textUIDrawing = null; + } } /** @@ -365,4 +379,16 @@ public Accessible getAccessibleChild(JComponent c, int i) { return SwingUtilities.getAccessibleChild(c, i); } + + /** + * Returns the {@code TextUIDrawing} instance responsible for text drawing + * and measuring. + * + * @return {@code TextUIDrawing} instance + * + * @since 9 + */ + public TextUIDrawing getTextUIDrawing() { + return textUIDrawing; + } }