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

📄 configurablekeybinding.java

📁 本系统是用 java 语言实现的一个 Email客户端
💻 JAVA
字号:
package net.suberic.util.gui;import java.awt.event.*;import javax.swing.JComponent;import javax.swing.KeyStroke;import javax.swing.Action;import javax.swing.InputMap;import javax.swing.ActionMap;import java.util.Hashtable;import java.util.Vector;import java.util.Enumeration;import net.suberic.util.VariableBundle;/** * This class is a KeyBinding controller for a JComponent. */public class ConfigurableKeyBinding implements ConfigurableUI {  private JComponent currentComponent;  private Hashtable commands = new Hashtable();  private Hashtable keyTable = new Hashtable();  private int condition = JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT;    /**   * This creates a new ConfigurableKeyBinding which attaches to component   * newComponent, and defines itself using componentID and vars.   */  public ConfigurableKeyBinding(JComponent newComponent, String componentID, VariableBundle vars) {    currentComponent = newComponent;        configureComponent(componentID, vars);  }    /**   * This configures the KeyBindings using the given componentID   * and VariableBundle.   *   * As defined in interface net.suberic.util.gui.ConfigurableUI.   */    public void configureComponent(String componentID, VariableBundle vars) {    if (componentID != null && vars.getProperty(componentID, "") != "") {      Vector keys = vars.getPropertyAsVector(componentID, "");      for (int i = 0; i < keys.size(); i++) {	String keyID = componentID + "." + (String)keys.elementAt(i);	String keyAction = vars.getProperty(keyID + ".Action" , "");	KeyStroke keyStroke = getKeyStroke(keyID, vars);	if (keyAction != "" && keyStroke != null) {	  putInKeyTable(keyAction, keyStroke);	}      }    }  }    /**   * This method returns the key defined by the property keyID in the   * VariableBundle vars.   */  public KeyStroke getKeyStroke(String keyID, VariableBundle vars) {    return KeyStroke.getKeyStroke(vars.getProperty(keyID + ".Key", ""));  }    /**   * This method actually binds the configured KeyStrokes to the current   * Actions.   *   * As defined in interface net.suberic.util.gui.ConfigurableUI.   */  public void setActive(Hashtable newCommands) {    commands = newCommands;    Enumeration hashKeys = getKeyTableKeys();    InputMap inputMap = currentComponent.getInputMap(getCondition());    ActionMap actionMap = currentComponent.getActionMap();    while (hashKeys.hasMoreElements()) {      String actionCmd = (String)hashKeys.nextElement();      Vector keyStrokeVector = getFromKeyTable(actionCmd);      Action a = getAction(actionCmd);      for (int i = 0; keyStrokeVector != null && i < keyStrokeVector.size(); i++) {	KeyStroke keyStroke = (KeyStroke)keyStrokeVector.elementAt(i);	inputMap.remove(keyStroke);	actionMap.remove(actionCmd);	if (a != null) {	  inputMap.put(keyStroke, actionCmd);	  actionMap.put(actionCmd, a);	}	/*	currentComponent.unregisterKeyboardAction(keyStroke);	if (a != null) {	  currentComponent.registerKeyboardAction(a, actionCmd, keyStroke, getCondition() );	}	*/      }    }  }    /**   * This method actually binds the configured KeyStrokes to the current   * Actions.   *   * As defined in interface net.suberic.util.gui.ConfigurableUI.   */  public void setActive(Action[] newActions) {    Hashtable tmpHash = new Hashtable();    if (newActions != null && newActions.length > 0) {      for (int i = 0; i < newActions.length; i++) {	String cmdName = (String)newActions[i].getValue(Action.NAME);	tmpHash.put(cmdName, newActions[i]);      }    }    setActive(tmpHash);  }    public void putInKeyTable(Object key, Object value) {    Vector valueList = (Vector) keyTable.get(key);    if (valueList != null) {      if (!valueList.contains(value))	valueList.add(value);    } else {      valueList = new Vector();      valueList.add(value);      keyTable.put(key, valueList);    }      }    public Vector getFromKeyTable(Object key) {    return (Vector) keyTable.get(key);  }    public Enumeration getKeyTableKeys() {    return keyTable.keys();  }    private Action getAction(String key) {    try {      return (Action)commands.get(key);    } catch (ClassCastException cce) {      return null;    }  }    public void setCondition(int newCondition) {    condition = newCondition;  }    public int getCondition() {    return condition;  }}

⌨️ 快捷键说明

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