使用Javafx,我有文本区域,如果用户按Shift&Enter,我想换行
我使用&&也使用+
private void KeyRelsesed_send(KeyEvent event) {
if (event.getCode() == (KeyCode.SHIFT && KeyCode.ENTER)) {
area.appendText("\n");
}
答案 0 :(得分:3)
Shift 键是修饰键。 KeyEvent
类具有返回布尔值的方法,用于在按下另一个非修饰键时检查修饰键是否按下。如果要检查 Shift + Enter ,则可以使用:
if (event.isShiftDown() && event.getCode() == KeyCode.ENTER) {
// Do something...
}
请注意,这还将允许其他修改键也可以按下。如果除 Shift 以外的一个或多个修饰键按下时,// Do something...
代码不应该执行,那么您必须明确检查它们是否不存在(例如!event.isAltDown()
)。在这种情况下,如果您创建自己的KeyCombination
并测试KeyEvent
是否与之匹配,则可能更容易实现。
KeyCombination combo = new KeyCodeCombination(KeyCode.ENTER, KeyCombination.SHIFT_DOWN);
if (combo.match(event)) {
// Do something...
}
根据KeyCodeCombination
's constructor的文档,这将需要使其他修饰键保持打开状态:
为指定的主键和指定的修饰符列表构造一个
KeyCodeCombination
。所有未明确列出的修饰键均设置为默认RELEASED
值。
注意:它说RELEASED
,但它们的意思是UP
。
如果您需要了解同时按下多个 non-modifier 键,则需要跟踪已按下但尚未释放的键。为此,请看一下possible duplicate对linked by Tarmo的可接受答案。