⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lazyactionmap.java

📁 JAVA 所有包
💻 JAVA
字号:
/* * @(#)LazyActionMap.java	1.6 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.basic;import java.lang.reflect.*;import javax.swing.*;import javax.swing.plaf.*;/** * An ActionMap that populates its contents as necessary. The * contents are populated by invoking the <code>loadActionMap</code> * method on the passed in Object. * * @version 1.6, 11/17/05 * @author Scott Violet */class LazyActionMap extends ActionMapUIResource {    /**     * Object to invoke <code>loadActionMap</code> on. This may be     * a Class object.     */    private transient Object _loader;    /**     * Installs an ActionMap that will be populated by invoking the     * <code>loadActionMap</code> method on the specified Class     * when necessary.     * <p>     * This should be used if the ActionMap can be shared.     *     * @param c JComponent to install the ActionMap on.     * @param loaderClass Class object that gets loadActionMap invoked     *                    on.     * @param defaultsKey Key to use to defaults table to check for     *        existing map and what resulting Map will be registered on.     */    static void installLazyActionMap(JComponent c, Class loaderClass,                                     String defaultsKey) {        ActionMap map = (ActionMap)UIManager.get(defaultsKey);        if (map == null) {            map = new LazyActionMap(loaderClass);            UIManager.getLookAndFeelDefaults().put(defaultsKey, map);        }        SwingUtilities.replaceUIActionMap(c, map);    }    /**     * Returns an ActionMap that will be populated by invoking the     * <code>loadActionMap</code> method on the specified Class     * when necessary.     * <p>     * This should be used if the ActionMap can be shared.     *     * @param c JComponent to install the ActionMap on.     * @param loaderClass Class object that gets loadActionMap invoked     *                    on.     * @param defaultsKey Key to use to defaults table to check for     *        existing map and what resulting Map will be registered on.     */    static ActionMap getActionMap(Class loaderClass,                                  String defaultsKey) {        ActionMap map = (ActionMap)UIManager.get(defaultsKey);        if (map == null) {            map = new LazyActionMap(loaderClass);            UIManager.getLookAndFeelDefaults().put(defaultsKey, map);        }        return map;    }    private LazyActionMap(Class loader) {        _loader = loader;    }    public void put(Action action) {        put(action.getValue(Action.NAME), action);    }    public void put(Object key, Action action) {        loadIfNecessary();        super.put(key, action);    }    public Action get(Object key) {        loadIfNecessary();        return super.get(key);    }    public void remove(Object key) {        loadIfNecessary();        super.remove(key);    }    public void clear() {        loadIfNecessary();        super.clear();    }    public Object[] keys() {        loadIfNecessary();        return super.keys();    }    public int size() {        loadIfNecessary();        return super.size();    }    public Object[] allKeys() {        loadIfNecessary();        return super.allKeys();    }    public void setParent(ActionMap map) {        loadIfNecessary();        super.setParent(map);    }    private void loadIfNecessary() {        if (_loader != null) {            Object loader = _loader;            _loader = null;            Class klass = (Class)loader;            try {                Method method = klass.getDeclaredMethod("loadActionMap",                                      new Class[] { LazyActionMap.class });                method.invoke(klass, new Object[] { this });            } catch (NoSuchMethodException nsme) {                assert false : "LazyActionMap unable to load actions " +                        klass;            } catch (IllegalAccessException iae) {                assert false : "LazyActionMap unable to load actions " +                        iae;            } catch (InvocationTargetException ite) {                assert false : "LazyActionMap unable to load actions " +                        ite;            } catch (IllegalArgumentException iae) {                assert false : "LazyActionMap unable to load actions " +                        iae;            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -