我在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
...等等
感谢您的帮助!
答案 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
}