Module  java.desktop
软件包  javax.swing

Class KeyStroke

  • All Implemented Interfaces:
    Serializable


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

    KeyStrokes用于定义高级(语义)动作事件。 您不需要捕获每个按键,而是丢弃您不感兴趣的按键,您关心的按键会自动启动与其注册的组件的操作。

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

    警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4版本开始,所有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)
        已过时。 使用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_修饰符。 由于这些数字都是两个不同的幂,它们的任何组合都是整数,其中每个位表示不同的修饰符键。 使用0指定没有修饰符。
        参数
        keyChar - 键盘字符的Character对象
        modifiers - 任何修饰符的按位组合
        结果
        该键的KeyStroke对象
        异常
        IllegalArgumentException - 如果keyChar为空
        从以下版本开始:
        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_修饰符。 由于这些数字都是两个不同的幂,它们的任何组合都是整数,其中每个位表示不同的修饰符键。 使用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_修饰符。 由于这些数字都是两个不同的幂,它们的任何组合都是整数,其中每个位表示不同的修饰符键。 使用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。
        参数
        s - 如上所述格式化的字符串
        结果
        该String的KeyStroke对象,如果指定的String为空,则为null,或者格式不正确
        另请参见:
        KeyEvent