如果在a和Z之间按下键,则JavaFX确定

时间:2015-11-30 13:45:41

标签: keycode

我在JavaFX中有ListView<String>,并且想确定用户是否按下(小写)和Z(大写)之间的键。

我处理它的代码如下:

@FXML
private void chooseElementByKey(KeyEvent event){
    if(event.getCode() == KeyCode.TAB){
        textfieldElement.setText("Element 1");
        event.consume();
        textfieldElement.requestFocus();
    }else if(/*put magic here*/){
        //more magic ...
    }
}

所以我想确定是否按下a和Z之间的键。必须有一个更好的方法

if(event.getCode() == KeyCode.a || event.getCode() == KeyCode.b ...等等

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

使用我评论中的链接:

https://docs.oracle.com/javafx/2/api/javafx/scene/input/KeyCode.html

isLetterKey()if(event.getKeyCode().isLetterKey()),其中:

  

如果此密钥代码对应于字母键

,则返回true

所以我相信你也应该能够isLetterKey()。但是,它没有定义什么被认为是“一个字母键”,所以如果你不想允许非英文字符,我不能100%确定这对你有用。

编辑:根据此链接:

https://bugs.openjdk.java.net/browse/JDK-8090108

private void launchScanBarcode(){ IntentIntegrator integrator = new IntentIntegrator(yourActivity); integrator.initiateScan(); } public void onActivityResult(int requestCode, int resultCode, Intent intent) { IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); if (scanResult != null) { // handle scan result with scanResult.getContents() or scanResult.getRawBytes() } // else continue with any other code you need in the method ... } 处理非英文字符有一些错误,例如:

  

KeyCode.isLetterKey对瑞典字母ö,ä和å返回false。

答案 1 :(得分:0)

尽管这个问题已经回答了,但我将为那些无法使用isLetterKey()方法的人做另外的贡献。

A-Z

对于那些不想(甚至不能)使用isLetterKey()函数的人,这是解决它的好方法:

if(ke.getKeyCode() >= KeyEvent.VK_A && ke.getKeyCode() <= KeyEvent.VK_Z) {
    //do Something
}

具有特殊字符

对于那些由于其语言中的特殊字符而无法使用isLetterKey()函数的用户,还有以下可能性:

1。创建一个包含所有特殊字符的字符数组

char[] specialChars = {'ä', 'ö', 'ü'};
boolean foundSpecialChar = false;

2。比较数组内容与KeyCode()

for(int i = 0; i < specialChars.length; i++) {
    if(ke.getKeyChar() == specialChars[i]) {
        foundSpecialChar = true;
    }
}

3。在A-Z示例的if条件中添加其他检查

if((ke.getKeyCode() >= KeyEvent.VK_A && ke.getKeyCode() <= KeyEvent.VK_Z) || foundSpecialChar) {
//do Something here
}