/** Copyright (c) 2003, 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* under the terms of the GNU General Public License version 2 only, as* published by the Free Software Foundation. Oracle designates this* particular file as subject to the "Classpath" exception as provided* by Oracle in the LICENSE file that accompanied this code.** This code is distributed in the hope that it will be useful, but WITHOUT* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License* version 2 for more details (a copy is included in the LICENSE file that* accompanied this code).** You should have received a copy of the GNU General Public License version* 2 along with this work; if not, write to the Free Software Foundation,* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.** Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA* or visit www.oracle.com if you need additional information or have any* questions.*/package sun.swing;import java.awt.Color;import java.awt.Insets;import javax.swing.*;import javax.swing.border.Border;import javax.swing.plaf.ComponentUI;import sun.awt.AppContext;/*** DefaultLookup provides a way to customize the lookup done by the* UIManager. The default implementation of DefaultLookup forwards* the call to the UIManager.* <p>* <b>WARNING:</b> While this class is public, it should not be treated as* public API and its API may change in incompatable ways between dot dot* releases and even patch releases. You should not rely on this class even* existing.** @author Scott Violet*/public class DefaultLookup {/*** Key used to store DefaultLookup for AppContext.*/private static final Object DEFAULT_LOOKUP_KEY = newStringBuffer("DefaultLookup");/*** Thread that last asked for a default.*/private static Thread currentDefaultThread;/*** DefaultLookup for last thread.*/private static DefaultLookup currentDefaultLookup;/*** If true, a custom DefaultLookup has been set.*/private static boolean isLookupSet;/*** Sets the DefaultLookup instance to use for the current* <code>AppContext</code>. Null implies the UIManager should be* used.*/public static void setDefaultLookup(DefaultLookup lookup) {synchronized(DefaultLookup.class) {if (!isLookupSet && lookup == null) {// Null was passed in, and no one has invoked setDefaultLookup// with a non-null value, we don't need to do anything.return;}else if (lookup == null) {// null was passed in, but someone has invoked setDefaultLookup// with a non-null value, use an instance of DefautLookup// which will fallback to UIManager.lookup = new DefaultLookup();}isLookupSet = true;AppContext.getAppContext().put(DEFAULT_LOOKUP_KEY, lookup);currentDefaultThread = Thread.currentThread();currentDefaultLookup = lookup;}}public static Object get(JComponent c, ComponentUI ui, String key) {boolean lookupSet;synchronized(DefaultLookup.class) {lookupSet = isLookupSet;}if (!lookupSet) {// No one has set a valid DefaultLookup, use UIManager.return UIManager.get(key, c.getLocale());}Thread thisThread = Thread.currentThread();DefaultLookup lookup;synchronized(DefaultLookup.class) {// See if we've already cached the DefaultLookup for this thread,// and use it if we have.if (thisThread == currentDefaultThread) {// It is cached, use it.lookup = currentDefaultLookup;}else {// Not cached, get the DefaultLookup to use from the AppContextlookup = (DefaultLookup)AppContext.getAppContext().get(DEFAULT_LOOKUP_KEY);if (lookup == null) {// Fallback to DefaultLookup, which will redirect to the// UIManager.lookup = new DefaultLookup();AppContext.getAppContext().put(DEFAULT_LOOKUP_KEY, lookup);}// Cache the values to make the next lookup easier.currentDefaultThread = thisThread;currentDefaultLookup = lookup;}}return lookup.getDefault(c, ui, key);}//// The following are convenience method that all use getDefault.//public static int getInt(JComponent c, ComponentUI ui, String key,int defaultValue) {Object iValue = get(c, ui, key);if (iValue == null || !(iValue instanceof Number)) {return defaultValue;}return ((Number)iValue).intValue();}public static int getInt(JComponent c, ComponentUI ui, String key) {return getInt(c, ui, key, -1);}public static Insets getInsets(JComponent c, ComponentUI ui, String key,Insets defaultValue) {Object iValue = get(c, ui, key);if (iValue == null || !(iValue instanceof Insets)) {return defaultValue;}return (Insets)iValue;}public static Insets getInsets(JComponent c, ComponentUI ui, String key) {return getInsets(c, ui, key, null);}public static boolean getBoolean(JComponent c, ComponentUI ui, String key,boolean defaultValue) {Object iValue = get(c, ui, key);if (iValue == null || !(iValue instanceof Boolean)) {return defaultValue;}return ((Boolean)iValue).booleanValue();}public static boolean getBoolean(JComponent c, ComponentUI ui, String key) {return getBoolean(c, ui, key, false);}public static Color getColor(JComponent c, ComponentUI ui, String key,Color defaultValue) {Object iValue = get(c, ui, key);if (iValue == null || !(iValue instanceof Color)) {return defaultValue;}return (Color)iValue;}public static Color getColor(JComponent c, ComponentUI ui, String key) {return getColor(c, ui, key, null);}public static Icon getIcon(JComponent c, ComponentUI ui, String key,Icon defaultValue) {Object iValue = get(c, ui, key);if (iValue == null || !(iValue instanceof Icon)) {return defaultValue;}return (Icon)iValue;}public static Icon getIcon(JComponent c, ComponentUI ui, String key) {return getIcon(c, ui, key, null);}public static Border getBorder(JComponent c, ComponentUI ui, String key,Border defaultValue) {Object iValue = get(c, ui, key);if (iValue == null || !(iValue instanceof Border)) {return defaultValue;}return (Border)iValue;}public static Border getBorder(JComponent c, ComponentUI ui, String key) {return getBorder(c, ui, key, null);}public Object getDefault(JComponent c, ComponentUI ui, String key) {// basicreturn UIManager.get(key, c.getLocale());}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。