模块  java.desktop
软件包  javax.swing

Class KeyStroke

  • 实现的所有接口
    Serializable

    public class KeyStroke
    extends AWTKeyStroke
    KeyStroke表示键盘或等效输入设备上的键操作。 KeyStrokes只能对应于特定键的按下或释放,就像KEY_PRESSED和KEY_RELEASED KeyEvents一样; 或者,它们可以对应于键入特定的Java字符,就像KEY_TYPED KeyEvents那样。 在所有情况下,KeyStrokes都可以指定操作期间必须存在的修饰符(alt,shift,control,meta,altGraph或其组合)以进行精确匹配。

    KeyStrokes用于定义高级(语义)动作事件。 您不关心每次按键并丢弃您不感兴趣的按键,而是您关心的那些按键会自动启动对其注册的组件的操作。

    KeyStrokes是不可变的,并且是唯一的。 客户端代码无法创建KeyStroke; 必须使用getKeyStroke的变体。 这些工厂方法允许KeyStroke实现有效地缓存和共享实例。

    警告:此类的序列化对象与以后的Swing版本不兼容。 当前的序列化支持适用于运行相同版本Swing的应用程序之间的短期存储或RMI。 从1.4开始, java.beans软件包中添加了对所有JavaBeans java.beans长期存储的支持。 请参阅XMLEncoder

    从以下版本开始:
    1.2
    另请参见:
    KeymapgetKeyStroke(char)Serialized Form
    • 方法详细信息

      • getKeyStroke

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

        @Deprecated
        public static KeyStroke getKeyStroke​(char keyChar,
                                             boolean onKeyRelease)
        Deprecated.
        use getKeyStroke(char)
        返回KeyStroke的一个实例,指定在按下或释放该键时是否认为该键被激活。 与此类中的所有其他工厂方法不同,此方法返回的实例不一定是缓存或共享的。
        参数
        keyChar - 键盘键的字符值
        onKeyRelease - true如果此KeyStroke对应于密钥释放; 否则为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.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_修饰符。 由于这些数字都是2的不同幂,因此它们的任何组合都是整数,其中每个位代表不同的修饰键。 使用0指定无修饰符。
        参数
        keyCode - 指定键盘键的数字代码的int
        modifiers - 任何修饰符的按位组合
        onKeyRelease - true如果KeyStroke应代表密钥释放; 否则为false
        结果
        该键的KeyStroke对象
        另请参见:
        KeyEventInputEvent
      • 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_修饰符。 由于这些数字都是2的不同幂,因此它们的任何组合都是整数,其中每个位代表不同的修饰键。 使用0指定无修饰符。
        参数
        keyCode - 指定键盘键的数字代码的int
        modifiers - 任何修饰符的按位组合
        结果
        该键的KeyStroke对象
        另请参见:
        KeyEventInputEvent
      • getKeyStrokeForEvent

        public static KeyStroke getKeyStrokeForEvent​(KeyEvent anEvent)
        返回KeyStroke,它表示生成给定KeyEvent的笔划。

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

        参数
        anEvent - 从中获取KeyStroke的KeyEvent
        结果
        引发事件的KeyStroke
        异常
        NullPointerException - 如果 anEvent为空
      • 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的KeyStroke对象,如果指定的String为null,或者格式不正确,则为null
        另请参见:
        KeyEvent