휴대 전화에서 키보드 입력을 받고 로봇 클래스를 사용하여 컴퓨터에서 표시하려고합니다. 전화로부터 ascii를 얻었으므로 ascii에 대한 VirtualKey 값 변환에 대한 해시 맵이 있습니다. 하지만 현재 코드에는 이상한 행동이 있습니다. 해시 맵에서 특정 심볼을 매핑하려고 할 때! "@ @ 나는 그것을 실행할 때 NullPointer Reference 예외를 얻습니다 .example의 경우!, 전화는 오른쪽 유니 코드 값 (33)을 보내고 해시 테이블에 나는 (int) '!' ? 또한 그래서이 매핑되는 것입니다하지만 널 (null) :(누군가가 도움을 주시기 바랍니다 수 반환 VK_EXCLAMATION를 반환해야합니다 (33) 인 키, 여기에 Java에서 VirtualKey 코드의 이상한 동작
내가 조회를 할 경우 냈다 내 코드는 다음과 같습니다int unicodekey = scanner.nextInt(); //unicode
robotkey = ascii2VK.asciiForVirtualKey.get(unicodekey);
robot.keyPress(robotkey);
robot.keyRelease(robotkey);
그리고 내 해시 맵은 다음과 같습니다.
이public class ascii2VK {
protected static final Map<Integer, Integer> asciiForVirtualKey;
static {
asciiForVirtualKey = new HashMap<Integer, Integer>();
asciiForVirtualKey.put(KeyEvent.VK_UNDEFINED, 0);
asciiForVirtualKey.put(KeyEvent.VK_QUOTE, (int)'\'');
asciiForVirtualKey.put(KeyEvent.VK_QUOTEDBL,(int)'"');
asciiForVirtualKey.put(KeyEvent.VK_AMPERSAND, (int)'&');
asciiForVirtualKey.put(KeyEvent.VK_BACK_QUOTE, (int)'`');
asciiForVirtualKey.put(KeyEvent.VK_NUMBER_SIGN, (int)'#');
asciiForVirtualKey.put(KeyEvent.VK_EXCLAMATION_MARK, (int)'!');
asciiForVirtualKey.put(KeyEvent.VK_AT, (int)'@');
asciiForVirtualKey.put(KeyEvent.VK_DOLLAR, (int)'$');
asciiForVirtualKey.put(KeyEvent.VK_BACK_SLASH, (int)'\\');
asciiForVirtualKey.put(KeyEvent.VK_SLASH, (int)'/');
.
.
.
.
}
아, 네가 어리석은 짓 같았어요.하지만 그걸 따로 떼어 놓았습니다. 화면 상에, 맵핑 (int)의 영감을 표시! VK_KEYS.EXCLAMATION에. 그것은 교대로 누르기를 한 다음, 1 회의 기자 회견을 통해서만 할 수 있습니다. –