javax.swing
public class: InputMap [javadoc |
source]
java.lang.Object
javax.swing.InputMap
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
ComponentInputMapUIResource, ComponentInputMap, InputMapUIResource, KeymapWrapper, RootPaneInputMap
InputMap provides a binding between an input event
(currently only
KeyStrokes are used)
and an
Object.
InputMaps
are usually used with an
ActionMap,
to determine an
Action to perform
when a key is pressed.
An
InputMap can have a parent
that is searched for bindings not defined in the
InputMap.
As with ActionMap if you create a cycle, eg:
InputMap am = new InputMap();
InputMap bm = new InputMap():
am.setParent(bm);
bm.setParent(am);
some of the methods will cause a StackOverflowError to be thrown.
- author:
Scott - Violet
- since:
1.3 -
| Methods from java.lang.Object: |
|---|
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Method from javax.swing.InputMap Detail: |
public KeyStroke[] allKeys() {
int count = size();
InputMap parent = getParent();
if (count == 0) {
if (parent != null) {
return parent.allKeys();
}
return keys();
}
if (parent == null) {
return keys();
}
KeyStroke[] keys = keys();
KeyStroke[] pKeys = parent.allKeys();
if (pKeys == null) {
return keys;
}
if (keys == null) {
// Should only happen if size() != keys.length, which should only
// happen if mutated from multiple threads (or a bogus subclass).
return pKeys;
}
HashMap keyMap = new HashMap();
int counter;
for (counter = keys.length - 1; counter >= 0; counter--) {
keyMap.put(keys[counter], keys[counter]);
}
for (counter = pKeys.length - 1; counter >= 0; counter--) {
keyMap.put(pKeys[counter], pKeys[counter]);
}
KeyStroke[] allKeys = new KeyStroke[keyMap.size()];
return (KeyStroke[])keyMap.keySet().toArray(allKeys);
}
Returns an array of the KeyStrokes defined in this
InputMap and its parent. This differs from keys() in that
this method includes the keys defined in the parent. |
public void clear() {
if (arrayTable != null) {
arrayTable.clear();
}
}
Removes all the mappings from this InputMap. |
public Object get(KeyStroke keyStroke) {
if (arrayTable == null) {
InputMap parent = getParent();
if (parent != null) {
return parent.get(keyStroke);
}
return null;
}
Object value = arrayTable.get(keyStroke);
if (value == null) {
InputMap parent = getParent();
if (parent != null) {
return parent.get(keyStroke);
}
}
return value;
}
Returns the binding for keyStroke, messaging the
parent InputMap if the binding is not locally defined. |
public InputMap getParent() {
return parent;
}
Gets this InputMap's parent. |
public KeyStroke[] keys() {
if (arrayTable == null) {
return null;
}
KeyStroke[] keys = new KeyStroke[arrayTable.size()];
arrayTable.getKeys(keys);
return keys;
}
Returns the KeyStrokes that are bound in this InputMap. |
public void put(KeyStroke keyStroke,
Object actionMapKey) {
if (keyStroke == null) {
return;
}
if (actionMapKey == null) {
remove(keyStroke);
}
else {
if (arrayTable == null) {
arrayTable = new ArrayTable();
}
arrayTable.put(keyStroke, actionMapKey);
}
}
Adds a binding for keyStroke to actionMapKey.
If actionMapKey is null, this removes the current binding
for keyStroke. |
public void remove(KeyStroke key) {
if (arrayTable != null) {
arrayTable.remove(key);
}
}
Removes the binding for key from this
InputMap. |
public void setParent(InputMap map) {
this.parent = map;
}
Sets this InputMap's parent. |
public int size() {
if (arrayTable == null) {
return 0;
}
return arrayTable.size();
}
Returns the number of KeyStroke bindings. |