Module java.desktop
Package javax.swing

Class KeyStroke

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;必须使用getKeyStroke的变体。这些工厂方法允许KeyStroke实现有效地缓存和共享实例。

警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同Swing版本的应用程序之间的RMI。从1.4开始,已将对所有JavaBeans的长期存储支持添加到java.beans包中。请参见XMLEncoder

自:
1.2
参见:
  • Method Details

    • getKeyStroke

      public static KeyStroke getKeyStroke(char keyChar)
      返回一个共享实例,表示指定字符的KEY_TYPED事件的KeyStroke
      参数:
      keyChar - 键盘键的字符值
      返回:
      该键的KeyStroke对象
    • getKeyStroke

      @Deprecated public static KeyStroke getKeyStroke(char keyChar, boolean onKeyRelease)
      Deprecated.
      use getKeyStroke(char)
      返回一个KeyStroke的实例,指定按下或释放键时是否被视为激活。与此类中的所有其他工厂方法不同,此方法返回的实例不一定被缓存或共享。
      参数:
      keyChar - 键盘键的字符值
      onKeyRelease - 如果此KeyStroke对应于键释放,则为true;否则为false
      返回:
      该键的KeyStroke对象
    • getKeyStroke

      public static KeyStroke getKeyStroke(Character keyChar, int modifiers)
      返回一个共享实例,表示指定Character对象和一组修饰符的KEY_TYPED事件的KeyStroke。请注意,第一个参数的类型为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_修饰符。由于这些数字都是不同的二的幂,它们的任何组合都是一个整数,其中每个位代表不同的修饰键。使用0表示没有修饰符。
      参数:
      keyChar - 键盘字符的Character对象
      modifiers - 任意修饰符的按位或组合
      返回:
      该键的KeyStroke对象
      抛出:
      IllegalArgumentException - 如果keyChar为null
      自:
      1.3
      参见:
    • 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.KeyEvent.getExtendedKeyCodeForChar来获取键码。修饰符包括任意组合:
      • 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_修饰符。由于这些数字都是不同的二的幂,它们的任何组合都是一个整数,其中每个位代表不同的修饰键。使用0表示没有修饰符。
      参数:
      keyCode - 指定键盘键的数字代码
      modifiers - 任意修饰符的按位或组合
      onKeyRelease - 如果KeyStroke应该表示键释放,则为true;否则为false
      返回:
      该键的KeyStroke对象
      参见:
    • 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.KeyEvent.getExtendedKeyCodeForChar来获取键码。修饰符包括任意组合:
      • 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_修饰符。由于这些数字都是不同的二的幂,它们的任何组合都是一个整数,其中每个位代表不同的修饰键。使用0表示没有修饰符。
      参数:
      keyCode - 指定键盘键的数字代码
      modifiers - 任意修饰符的按位或组合
      返回:
      该键的KeyStroke对象
      参见:
    • getKeyStrokeForEvent

      public static KeyStroke getKeyStrokeForEvent(KeyEvent anEvent)
      返回一个表示生成给定KeyEvent的stroke的KeyStroke。

      此方法从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 := 长度为1的Unicode字符的字符串。
          pressedReleasedID := (pressed | released) key
          key := KeyEvent键码名称,即在"VK_"之后的名称。
       
      如果未指定typed、pressed或released,则假定为pressed。以下是一些示例:
           "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。
      参数:
      s - 格式如上所述的字符串
      返回:
      该字符串的KeyStroke对象,如果指定的字符串为null或格式不正确,则返回null
      参见: