javax.swing

接口
异常
java.lang.Object
  继承者 java.awt.AWTKeyStroke
      继承者 javax.swing.KeyStroke
所有已实现的接口:
Serializable

public class KeyStroke
     
extends AWTKeyStroke

表示键盘或等效输入设置上的键操作的 KeyStroke。KeyStroke 仅能对应于按下或释放某个特定的键,正如 KEY_PRESSED 和 KEY_RELEASED KeyEvents 执行的操作;或者,它们可能对应于键入特定的 Java 字符,正如 KEY_TYPED KeyEvents 执行的操作。在所有情况下,KeyStroke 都可以指定修饰符(alt、shift、control、meta、altGraph 或其组合),在针对精确匹配的操作中,这些修饰符必须存在。

KeyStroke 用于定义高级(语义)操作事件。不用捕获每个 keystroke 并抛弃不感兴趣的 keystroke,这些重要的 keystroke 会自动在其注册的 Components 上启动操作。

KeyStroke 是不可变的,而且是唯一的。客户端代码无法创建 KeyStroke;必须使用 getKeyStroke 的变体。这些工厂方法使得 KeyStroke 实现能够高效缓存和共享实例。

警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder

另请参见:
Keymap, getKeyStroke(char)

方法摘要
static KeyStroke getKeyStroke(char keyChar)
          返回 KeyStroke 的共享实例,前者表示指定字符的 KEY_TYPED 事件。
static KeyStroke getKeyStroke(Character keyChar, int modifiers)
          返回 KeyStroke 的一个共享实例,它表示指定 Character 对象和一组修饰符的 KEY_TYPED 事件。
static KeyStroke getKeyStroke(char keyChar, boolean onKeyRelease)
          已过时。 使用 getKeyStroke(char)
static KeyStroke getKeyStroke(int keyCode, int modifiers)
          在给出一个数字键代码和一组修饰符的情况下,返回 KeyStroke 的一个共享实例。
static KeyStroke getKeyStroke(int keyCode, int modifiers, boolean onKeyRelease)
          在给出一个数字键代码和一组修饰符的情况下,返回 KeyStroke 的一个共享实例,指定该键在按下或释放时是否为已激活。
static KeyStroke getKeyStroke(String s)
          分析字符串并返回 KeyStroke
static KeyStroke getKeyStrokeForEvent(KeyEvent anEvent)
          返回一个 KeyStroke,它表示生成给定 KeyEvent 的快捷键事件。
 
从类 java.awt.AWTKeyStroke 继承的方法
equals, getAWTKeyStroke, getAWTKeyStroke, getAWTKeyStroke, getAWTKeyStroke, getAWTKeyStroke, getAWTKeyStrokeForEvent, getKeyChar, getKeyCode, getKeyEventType, getModifiers, hashCode, isOnKeyRelease, readResolve, registerSubclass, toString
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

方法详细信息

getKeyStroke

public static KeyStroke getKeyStroke(char keyChar)
返回 KeyStroke 的共享实例,前者表示指定字符的 KEY_TYPED 事件。

参数:
keyChar - 键盘上某个键的字符值
返回:
该键的 KeyStroke 对象

getKeyStroke

@Deprecated
public static KeyStroke getKeyStroke(char keyChar,
                                                boolean onKeyRelease)
已过时。  使用 getKeyStroke(char)

返回 KeyStroke 的实例,指定该键在按下或释放时是否视为已激活。与此类中的所有其他工厂方法不同,此方法返回的实例不一定被缓存或共享。

参数:
keyChar - 键盘上某个键的字符值
onKeyRelease - 如果此 KeyStroke 对应于某个键的释放,则为 true;否则为 false
返回:
键的 KeyStroke 对象

getKeyStroke

public static KeyStroke getKeyStroke(Character keyChar,
                                     int modifiers)
返回 KeyStroke 的一个共享实例,它表示指定 Character 对象和一组修饰符的 KEY_TYPED 事件。注意,第一个参数是 Character 类型而不是 char 类型。这是为了避免在调用 getKeyStroke(int keyCode, int modifiers) 时发生无意的冲突。 修饰符由以下任意组合组成:
  • 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
也可以使用下面列出的旧的修饰符,但它们被映射到 _DOWN_ 修饰符。
  • 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
也可以使用,但它们被映射到 _DOWN_ 修饰符。 因为这些数字都是 2 的不同次幂,所以它们的任意组合是一个整数,该整数的每个位都表示一个不同的修饰符键。可以使用 0 指定无修饰符。

参数:
keyChar - 键盘字符的 Character 对象
modifiers - 任意修饰符的按位或组合
返回:
该键的 KeyStroke 对象
抛出:
IllegalArgumentException - 如果 keyChar 为 null
从以下版本开始:
1.3
另请参见:
InputEvent

getKeyStroke

public static KeyStroke getKeyStroke(int keyCode,
                                     int modifiers,
                                     boolean onKeyRelease)
在给出一个数字键代码和一组修饰符的情况下,返回 KeyStroke 的一个共享实例,指定该键在按下或释放时是否为已激活。

可以使用在 java.awt.event.KeyEvent 中定义的“虚拟键”常量来指定键代码。例如:

  • java.awt.event.KeyEvent.VK_ENTER
  • java.awt.event.KeyEvent.VK_TAB
  • java.awt.event.KeyEvent.VK_SPACE
修饰符由以下任意组合组成:
  • 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
旧的修饰符
  • 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
也可以使用,但它们被映射到 _DOWN_ 修饰符。 因为这些数字都是 2 的不同次幂,所以它们的任意组合是一个整数,该整数的每个位都表示一个不同的修饰符键。可以使用 0 指定无修饰符。

参数:
keyCode - 一个 int,指定键盘上某个键的数字代码
modifiers - 任意修饰符的按位或组合
onKeyRelease - 如果 KeyStroke 应该表示一个键释放,则为 true;否则为 false
返回:
该键的 KeyStroke 对象
另请参见:
KeyEvent, InputEvent

getKeyStroke

public static KeyStroke getKeyStroke(int keyCode,
                                     int modifiers)
在给出一个数字键代码和一组修饰符的情况下,返回 KeyStroke 的一个共享实例。返回的 KeyStroke 将对应于一个按键操作。

可以使用在 java.awt.event.KeyEvent 中定义的“虚拟键”常量来指定键代码。例如:

  • java.awt.event.KeyEvent.VK_ENTER
  • java.awt.event.KeyEvent.VK_TAB
  • java.awt.event.KeyEvent.VK_SPACE
修饰符由以下任意组合组成:
  • 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
旧的修饰符
  • 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
也可以使用,但它们被映射到 _DOWN_ 修饰符。 因为这些数字都是 2 的不同次幂,所以它们的任意组合是一个整数,该整数的每个位都表示一个不同的修饰符键。可以使用 0 指定无修饰符。

参数:
keyCode - 一个 int,指定键盘上某个键的数字代码
modifiers - 任意修饰符的按位或组合
返回:
该键的 KeyStroke 对象
另请参见:
KeyEvent, InputEvent

getKeyStrokeForEvent

public static KeyStroke getKeyStrokeForEvent(KeyEvent anEvent)
返回一个 KeyStroke,它表示生成给定 KeyEvent 的快捷键事件。

此方法获得来自 KeyTyped 事件的 keyChar,以及来自 KeyPressed 或 KeyReleased 事件的 keyCode。为所有三种类型的 KeyEvent 获取 KeyEvent 修饰符。

参数:
anEvent - 从中获取 KeyStroke 的 KeyEvent
返回:
促成事件的 KeyStroke
抛出:
NullPointerException - 如果 anEvent 为 null

getKeyStroke

public static KeyStroke getKeyStroke(String s)
分析字符串并返回 KeyStroke。字符串必须具有以下语法:
    <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_".
 
如果没有指定是键入、按下还是释放,则假定为按下。以下是一些示例:
     "INSERT" => getKeyStroke(KeyEvent.VK_INSERT, 0);
     "control DELETE" => getKeyStroke(KeyEvent.VK_DELETE, InputEvent.CTRL_MASK);
     "alt shift X" => getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK);
     "alt shift released X" => getKeyStroke(KeyEvent.VK_X, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK, true);
     "typed a" => getKeyStroke('a');
 
为了维持向后兼容性,指定 null String 或格式不正确的 String 将返回 null。

参数:
s - 用上述方法格式化的 String
返回:
该 String 的 KeyStroke 对象,如果指定的 String 为 null 或格式不正确,则返回 null