APIdia Launch Partner
Top Description Fields Constructors Methods
java.awt

public Class AWTKeyStroke

Additional top-level class in compilation unit: VKCollection.

extends Object
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Known Direct Subclasses
javax.swing.KeyStroke
Imports
java.awt.event.InputEvent, .KeyEvent, java.io.Serial, .Serializable, java.lang.reflect.Field, .Modifier, java.util.Collections, .HashMap, .Map, .StringTokenizer, sun.swing.SwingAccessor

An AWTKeyStroke represents a key action on the keyboard, or equivalent input device. AWTKeyStrokes can correspond to only a press or release of a particular key, just as KEY_PRESSED and KEY_RELEASED KeyEvents do; alternately, they can correspond to typing a specific Java character, just as KEY_TYPED KeyEvents do. In all cases, AWTKeyStrokes can specify modifiers (alt, shift, control, meta, altGraph, or a combination thereof) which must be present during the action for an exact match.

AWTKeyStrokes are immutable, and are intended to be unique. Client code should never create an AWTKeyStroke on its own, but should instead use a variant of getAWTKeyStroke. Client use of these factory methods allows the AWTKeyStroke implementation to cache and share instances efficiently.

Authors
Arnaud Weber, David Mendenhall
Since
1.4
See Also
getAWTKeyStroke

Field Summary

Modifier and TypeField and Description
private static Map<AWTKeyStroke, AWTKeyStroke>
private static AWTKeyStroke
private char
private int
private static Map<String, Integer>
private int
private boolean
private static final long
serialVersionUID

Use serialVersionUID from JDK 1.4 for interoperability.

private static VKCollection
vks

Associates VK_XXX (as a String) with code (as Integer).

Constructor Summary

AccessConstructor and Description
protected
AWTKeyStroke()

Constructs an AWTKeyStroke with default values.

protected
AWTKeyStroke(char
the character value for a keyboard key
keyChar
,
int
the key code for this AWTKeyStroke
keyCode
,
int
a bitwise-ored combination of any modifiers
modifiers
,
boolean
true if this AWTKeyStroke corresponds to a key release; false otherwise
onKeyRelease
)

Constructs an AWTKeyStroke with the specified values.

Method Summary

Modifier and TypeMethod and Description
public final boolean

Returns:

true if the objects are identical
equals
(Object
the Object to compare this object to
anObject
)

Overrides java.lang.Object.equals.

Returns true if this object is identical to the specified object.

public static AWTKeyStroke

Returns:

an AWTKeyStroke object for that key
getAWTKeyStroke
(char
the character value for a keyboard key
keyChar
)

Returns a shared instance of an AWTKeyStroke that represents a KEY_TYPED event for the specified character.

public static AWTKeyStroke

Returns:

an AWTKeyStroke object for that key
getAWTKeyStroke
(Character
the Character object for a keyboard character
keyChar
,
int
a bitwise-ored combination of any modifiers
modifiers
)

Returns a shared instance of an AWTKeyStroke that represents a KEY_TYPED event for the specified Character object and a set of modifiers.

public static AWTKeyStroke

Returns:

an AWTKeyStroke object for that key
getAWTKeyStroke
(int
an int specifying the numeric code for a keyboard key
keyCode
,
int
a bitwise-ored combination of any modifiers
modifiers
,
boolean
true if the AWTKeyStroke should represent a key release; false otherwise
onKeyRelease
)

Returns a shared instance of an AWTKeyStroke, given a numeric key code and a set of modifiers, specifying whether the key is activated when it is pressed or released.

public static AWTKeyStroke

Returns:

an AWTKeyStroke object for that key
getAWTKeyStroke
(int
an int specifying the numeric code for a keyboard key
keyCode
,
int
a bitwise-ored combination of any modifiers
modifiers
)

Returns a shared instance of an AWTKeyStroke, given a numeric key code and a set of modifiers.

public static AWTKeyStroke

Returns:

an AWTKeyStroke object for that String
getAWTKeyStroke
(String
a String formatted as described above
s
)

Parses a string and returns an AWTKeyStroke.

public static AWTKeyStroke

Returns:

the AWTKeyStroke that precipitated the event
getAWTKeyStrokeForEvent
(KeyEvent
the KeyEvent from which to obtain the AWTKeyStroke
anEvent
)

Returns an AWTKeyStroke which represents the stroke which generated a given KeyEvent.

private static synchronized AWTKeyStroke
getCachedStroke(char keyChar, int keyCode, int modifiers, boolean onKeyRelease)

public final char

Returns:

a char value
getKeyChar
()

Returns the character for this AWTKeyStroke.

public final int

Returns:

an int containing the key code value
getKeyCode
()

Returns the numeric key code for this AWTKeyStroke.

public final int

Returns:

KeyEvent.KEY_PRESSED, KeyEvent.KEY_TYPED, or KeyEvent.KEY_RELEASED
getKeyEventType
()

Returns the type of KeyEvent which corresponds to this AWTKeyStroke.

public final int

Returns:

an int containing the modifiers
getModifiers
()

Returns the modifier keys for this AWTKeyStroke.

pack-priv static String
getModifiersText(int modifiers)

private static VKCollection
pack-priv static String
getVKText(int keyCode)

private static int
getVKValue(String key)

Returns the integer constant for the KeyEvent.VK field named key.

public int

Returns:

an int that represents this object
hashCode
()

Overrides java.lang.Object.hashCode.

Returns a numeric value for this object that is likely to be unique, making it a good choice as the index value in a hash table.

public final boolean

Returns:

true if this AWTKeyStroke represents a key release; false otherwise
isOnKeyRelease
()

Returns whether this AWTKeyStroke represents a key release.

private static int
mapNewModifiers(int modifiers)

private static int
mapOldModifiers(int modifiers)

protected Object

Returns:

a cached instance which is equal to this instance
readResolve
()

Returns a cached instance of AWTKeyStroke (or a subclass of AWTKeyStroke) which is equal to this instance.

protected static void
registerSubclass(Class<?>
the new Class of which the factory methods should create instances
subclass
)
Deprecated

The method has no effect and is only left present to avoid introducing a binary incompatibility.

public String

Returns:

a String representation of this object
toString
()

Overrides java.lang.Object.toString.

Returns a string that displays and identifies this object's properties.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

cacheback to summary
private static Map<AWTKeyStroke, AWTKeyStroke> cache
cacheKeyback to summary
private static AWTKeyStroke cacheKey
keyCharback to summary
private char keyChar
keyCodeback to summary
private int keyCode
modifierKeywordsback to summary
private static Map<String, Integer> modifierKeywords
modifiersback to summary
private int modifiers
onKeyReleaseback to summary
private boolean onKeyRelease
serialVersionUIDback to summary
private static final long serialVersionUID

Use serialVersionUID from JDK 1.4 for interoperability.

Annotations
@Serial
vksback to summary
private static VKCollection vks

Associates VK_XXX (as a String) with code (as Integer). This is done to avoid the overhead of the reflective call to find the constant.

Constructor Detail

AWTKeyStrokeback to summary
protected AWTKeyStroke()

Constructs an AWTKeyStroke with default values. The default values used are:

AWTKeyStroke default values
Property Default Value
Key Char KeyEvent.CHAR_UNDEFINED
Key Code KeyEvent.VK_UNDEFINED
Modifiers none
On key release? false
AWTKeyStrokes should not be constructed by client code. Use a variant of getAWTKeyStroke instead.
See Also
getAWTKeyStroke
AWTKeyStrokeback to summary
protected AWTKeyStroke(char keyChar, int keyCode, int modifiers, boolean onKeyRelease)

Constructs an AWTKeyStroke with the specified values. AWTKeyStrokes should not be constructed by client code. Use a variant of getAWTKeyStroke instead.

Parameters
keyChar:char

the character value for a keyboard key

keyCode:int

the key code for this AWTKeyStroke

modifiers:int

a bitwise-ored combination of any modifiers

onKeyRelease:boolean

true if this AWTKeyStroke corresponds to a key release; false otherwise

See Also
getAWTKeyStroke

Method Detail

equalsback to summary
public final boolean equals(Object anObject)

Overrides java.lang.Object.equals.

Returns true if this object is identical to the specified object.

Parameters
anObject:Object

the Object to compare this object to

Returns:boolean

true if the objects are identical

getAWTKeyStrokeback to summary
public static AWTKeyStroke getAWTKeyStroke(char keyChar)

Returns a shared instance of an AWTKeyStroke that represents a KEY_TYPED event for the specified character.

Parameters
keyChar:char

the character value for a keyboard key

Returns:AWTKeyStroke

an AWTKeyStroke object for that key

getAWTKeyStrokeback to summary
public static AWTKeyStroke getAWTKeyStroke(Character keyChar, int modifiers)

Returns a shared instance of an AWTKeyStroke that represents a KEY_TYPED event for the specified Character object and a set of modifiers. Note that the first parameter is of type Character rather than char. This is to avoid inadvertent clashes with calls to getAWTKeyStroke(int keyCode, int modifiers). The modifiers consist of any combination of following:

  • java.awt.event.InputEvent.SHIFT_DOWN_MASK
  • java.awt.event.InputEvent.CTRL_DOWN_MASK
  • java.awt.event.InputEvent.META_DOWN_MASK
  • java.awt.event.InputEvent.ALT_DOWN_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK
The old modifiers listed below also can be used, but they are mapped to _DOWN_ modifiers.
  • java.awt.event.InputEvent.SHIFT_MASK
  • java.awt.event.InputEvent.CTRL_MASK
  • java.awt.event.InputEvent.META_MASK
  • java.awt.event.InputEvent.ALT_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_MASK
also can be used, but they are mapped to _DOWN_ modifiers. Since these numbers are all different powers of two, any combination of them is an integer in which each bit represents a different modifier key. Use 0 to specify no modifiers.
Parameters
keyChar:Character

the Character object for a keyboard character

modifiers:int

a bitwise-ored combination of any modifiers

Returns:AWTKeyStroke

an AWTKeyStroke object for that key

Exceptions
IllegalArgumentException:
if keyChar is null
See Also
java.awt.event.InputEvent
getAWTKeyStrokeback to summary
public static AWTKeyStroke getAWTKeyStroke(int keyCode, int modifiers, boolean onKeyRelease)

Returns a shared instance of an AWTKeyStroke, given a numeric key code and a set of modifiers, specifying whether the key is activated when it is pressed or released.

The "virtual key" constants defined in java.awt.event.KeyEvent can be used to specify the key code. For example:

  • java.awt.event.KeyEvent.VK_ENTER
  • java.awt.event.KeyEvent.VK_TAB
  • java.awt.event.KeyEvent.VK_SPACE
Alternatively, the key code may be obtained by calling java.awt.event.KeyEvent.getExtendedKeyCodeForChar. The modifiers consist of any combination of:
  • java.awt.event.InputEvent.SHIFT_DOWN_MASK
  • java.awt.event.InputEvent.CTRL_DOWN_MASK
  • java.awt.event.InputEvent.META_DOWN_MASK
  • java.awt.event.InputEvent.ALT_DOWN_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK
The old modifiers
  • java.awt.event.InputEvent.SHIFT_MASK
  • java.awt.event.InputEvent.CTRL_MASK
  • java.awt.event.InputEvent.META_MASK
  • java.awt.event.InputEvent.ALT_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_MASK
also can be used, but they are mapped to _DOWN_ modifiers. Since these numbers are all different powers of two, any combination of them is an integer in which each bit represents a different modifier key. Use 0 to specify no modifiers.
Parameters
keyCode:int

an int specifying the numeric code for a keyboard key

modifiers:int

a bitwise-ored combination of any modifiers

onKeyRelease:boolean

true if the AWTKeyStroke should represent a key release; false otherwise

Returns:AWTKeyStroke

an AWTKeyStroke object for that key

See Also
java.awt.event.KeyEvent, java.awt.event.InputEvent
getAWTKeyStrokeback to summary
public static AWTKeyStroke getAWTKeyStroke(int keyCode, int modifiers)

Returns a shared instance of an AWTKeyStroke, given a numeric key code and a set of modifiers. The returned AWTKeyStroke will correspond to a key press.

The "virtual key" constants defined in java.awt.event.KeyEvent can be used to specify the key code. For example:

  • java.awt.event.KeyEvent.VK_ENTER
  • java.awt.event.KeyEvent.VK_TAB
  • java.awt.event.KeyEvent.VK_SPACE
The modifiers consist of any combination of:
  • java.awt.event.InputEvent.SHIFT_DOWN_MASK
  • java.awt.event.InputEvent.CTRL_DOWN_MASK
  • java.awt.event.InputEvent.META_DOWN_MASK
  • java.awt.event.InputEvent.ALT_DOWN_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_DOWN_MASK
The old modifiers
  • java.awt.event.InputEvent.SHIFT_MASK
  • java.awt.event.InputEvent.CTRL_MASK
  • java.awt.event.InputEvent.META_MASK
  • java.awt.event.InputEvent.ALT_MASK
  • java.awt.event.InputEvent.ALT_GRAPH_MASK
also can be used, but they are mapped to _DOWN_ modifiers. Since these numbers are all different powers of two, any combination of them is an integer in which each bit represents a different modifier key. Use 0 to specify no modifiers.
Parameters
keyCode:int

an int specifying the numeric code for a keyboard key

modifiers:int

a bitwise-ored combination of any modifiers

Returns:AWTKeyStroke

an AWTKeyStroke object for that key

See Also
java.awt.event.KeyEvent, java.awt.event.InputEvent
getAWTKeyStrokeback to summary
public static AWTKeyStroke getAWTKeyStroke(String s)

Parses a string and returns an AWTKeyStroke. The string must have the following syntax:

   <modifiers>* (<typedID> | <pressedReleasedID>)

   modifiers := shift | control | ctrl | meta | alt | altGraph
   typedID := typed <typedKey>
   typedKey := string of length 1 giving Unicode character.
   pressedReleasedID := (pressed | released) key
   key := KeyEvent key code name, i.e. the name following "VK_".
If typed, pressed or released is not specified, pressed is assumed. Here are some examples:
    "INSERT" => getAWTKeyStroke(KeyEvent.VK_INSERT, 0);
    "control DELETE" => getAWTKeyStroke(KeyEvent.VK_DELETE, InputEvent.CTRL_MASK);
    "alt shift X" => getAWTKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK);
    "alt shift released X" => getAWTKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK, true);
    "typed a" => getAWTKeyStroke('a');
Parameters
s:String

a String formatted as described above

Returns:AWTKeyStroke

an AWTKeyStroke object for that String

Annotations
@SuppressWarnings:deprecation
Exceptions
IllegalArgumentException:
if s is null, or is formatted incorrectly
getAWTKeyStrokeForEventback to summary
public static AWTKeyStroke getAWTKeyStrokeForEvent(KeyEvent anEvent)

Returns an AWTKeyStroke which represents the stroke which generated a given KeyEvent.

This method obtains the keyChar from a KeyTyped event, and the keyCode from a KeyPressed or KeyReleased event. The KeyEvent modifiers are obtained for all three types of KeyEvent.

Parameters
anEvent:KeyEvent

the KeyEvent from which to obtain the AWTKeyStroke

Returns:AWTKeyStroke

the AWTKeyStroke that precipitated the event

Annotations
@SuppressWarnings:deprecation
Exceptions
NullPointerException:
if anEvent is null
getCachedStrokeback to summary
private static synchronized AWTKeyStroke getCachedStroke(char keyChar, int keyCode, int modifiers, boolean onKeyRelease)
getKeyCharback to summary
public final char getKeyChar()

Returns the character for this AWTKeyStroke.

Returns:char

a char value

See Also
getAWTKeyStroke(char), KeyEvent#getKeyChar
getKeyCodeback to summary
public final int getKeyCode()

Returns the numeric key code for this AWTKeyStroke.

Returns:int

an int containing the key code value

See Also
getAWTKeyStroke(int, int), KeyEvent#getKeyCode
getKeyEventTypeback to summary
public final int getKeyEventType()

Returns the type of KeyEvent which corresponds to this AWTKeyStroke.

Returns:int

KeyEvent.KEY_PRESSED, KeyEvent.KEY_TYPED, or KeyEvent.KEY_RELEASED

See Also
java.awt.event.KeyEvent
getModifiersback to summary
public final int getModifiers()

Returns the modifier keys for this AWTKeyStroke.

Returns:int

an int containing the modifiers

See Also
getAWTKeyStroke(int, int)
getModifiersTextback to summary
pack-priv static String getModifiersText(int modifiers)
getVKCollectionback to summary
private static VKCollection getVKCollection()
getVKTextback to summary
pack-priv static String getVKText(int keyCode)
getVKValueback to summary
private static int getVKValue(String key)

Returns the integer constant for the KeyEvent.VK field named key. This will throw an IllegalArgumentException if key is not a valid constant.

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Returns a numeric value for this object that is likely to be unique, making it a good choice as the index value in a hash table.

Returns:int

an int that represents this object

isOnKeyReleaseback to summary
public final boolean isOnKeyRelease()

Returns whether this AWTKeyStroke represents a key release.

Returns:boolean

true if this AWTKeyStroke represents a key release; false otherwise

See Also
getAWTKeyStroke(int, int, boolean)
mapNewModifiersback to summary
private static int mapNewModifiers(int modifiers)
Annotations
@SuppressWarnings:deprecation
mapOldModifiersback to summary
private static int mapOldModifiers(int modifiers)
Annotations
@SuppressWarnings:deprecation
readResolveback to summary
protected Object readResolve() throws ObjectStreamException

Returns a cached instance of AWTKeyStroke (or a subclass of AWTKeyStroke) which is equal to this instance.

Returns:Object

a cached instance which is equal to this instance

Annotations
@Serial
Exceptions
ObjectStreamException:
if a serialization problem occurs
registerSubclassback to summary
protected static void registerSubclass(Class<?> subclass)

Deprecated

The method has no effect and is only left present to avoid introducing a binary incompatibility.

Parameters
subclass:Class<?>

the new Class of which the factory methods should create instances

Annotations
@Deprecated
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns a string that displays and identifies this object's properties. The String returned by this method can be passed as a parameter to getAWTKeyStroke(String) to produce a key stroke equal to this key stroke.

Returns:String

a String representation of this object

See Also
getAWTKeyStroke(String)