java.lang.Object java.awt.AWTKeyStroke javax.swing.KeyStroke
public class KeyStroke
表示键盘或等效输入设置上的键操作的 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.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
方法详细信息 |
---|
public static KeyStroke getKeyStroke(char keyChar)
KeyStroke
的共享实例,前者表示指定字符的
KEY_TYPED
事件。
keyChar
- 键盘上某个键的字符值
@Deprecated public static KeyStroke getKeyStroke(char keyChar, boolean onKeyRelease)
keyChar
- 键盘上某个键的字符值
onKeyRelease
- 如果此 KeyStroke 对应于某个键的释放,则为
true
;否则为
false
。
public static KeyStroke getKeyStroke(Character keyChar, int modifiers)
KeyStroke
的一个共享实例,它表示指定 Character 对象和一组修饰符的
KEY_TYPED
事件。注意,第一个参数是 Character 类型而不是 char 类型。这是为了避免在调用
getKeyStroke(int keyCode, int modifiers)
时发生无意的冲突。 修饰符由以下任意组合组成:
keyChar
- 键盘字符的 Character 对象
modifiers
- 任意修饰符的按位或组合
IllegalArgumentException
- 如果 keyChar 为 null
InputEvent
public static KeyStroke getKeyStroke(int keyCode, int modifiers, boolean onKeyRelease)
可以使用在 java.awt.event.KeyEvent 中定义的“虚拟键”常量来指定键代码。例如:
keyCode
- 一个 int,指定键盘上某个键的数字代码
modifiers
- 任意修饰符的按位或组合
onKeyRelease
- 如果 KeyStroke 应该表示一个键释放,则为
true
;否则为
false
。
KeyEvent
,
InputEvent
public static KeyStroke getKeyStroke(int keyCode, int modifiers)
可以使用在 java.awt.event.KeyEvent 中定义的“虚拟键”常量来指定键代码。例如:
keyCode
- 一个 int,指定键盘上某个键的数字代码
modifiers
- 任意修饰符的按位或组合
KeyEvent
,
InputEvent
public static KeyStroke getKeyStrokeForEvent(KeyEvent anEvent)
此方法获得来自 KeyTyped 事件的 keyChar,以及来自 KeyPressed 或 KeyReleased 事件的 keyCode。为所有三种类型的 KeyEvent 获取 KeyEvent 修饰符。
anEvent
- 从中获取 KeyStroke 的 KeyEvent
NullPointerException
- 如果
anEvent
为 null
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