2016-11-14 1 views
2

저는 현재 Java로 계산기를 작성 중이고 키 리스너를 구현하기 시작했습니다. 잘 작동하지만 캐럿 기호 (^)를 입력하면 즉시 등록되지 않습니다. 다른 키를 먼저 눌러야 나타납니다.캐럿 (^)은 즉시 등록하지 않습니다. Java 키 리스너

일반 텍스트 문서에 캐럿 을 입력하려고 할 때와 동일한 동작을 사용한다고 생각합니다. 그러나이 문제를 해결할 방법이 있습니까?

@Override 
public void handle(KeyEvent ke) { 
    String key = ke.getCharacter(); 

    if (key.matches("[0-9*/+-=.()^%]")) { 
     controller.getButton(key).fire(); 
    } 
} 

편집 : 해결 방법을 찾을 도움이된다면

, 여기에 KeyEvent를 처리하려면 코드입니다. Eli Sadoff가 언급 한 문제는 내 키보드가 내 키보드의 중요한 열쇠라는 것입니다. 나의 캐럿 바인딩 때문에 것은 "시프트 + ¨", 나는 이런 식으로 해결 할 수 있었다 :

@Override 
public void handle(KeyEvent ke) { 
    String key = ke.getCharacter(); 

    if (ke.isShiftDown() && ke.getCode() == KeyCode.DEAD_DIAERESIS) { 
     controller.getButton("^").fire(); 
    } 

    else if (key.matches("[0-9*/+-=.()%]")) { 
     controller.getButton(key).fire(); 
    } 
} 
+0

'+','(',')','%'같은 문제가 우연히 발생합니까? –

+0

아니요, 둘 다 아닙니다. – Javatar4ever

+1

컴퓨터에서 캐럿 키가 죽은 키입니까? (의미는'^'를 입력 한 다음'e '는'ê'를 생성합니다) –

답변

2

문제입니다 당신이 죽은 키와 컴퓨터 취급 ^을에 사용하는 입력 키보드 레이아웃 , 그것은 조합 구별 자이므로. 이를 해결하는 방법은 입력 키보드 레이아웃을 ^을 조합 분음 기호로 처리하지 않는 키보드로 변경하는 것입니다. ^ + e을 입력하고 ê 또는 ^e이되는지 확인하여 테스트 할 수 있습니다.

+0

이것은 실제로 정확합니다, 감사합니다! – Javatar4ever

+1

질문 수정으로 문제에 대한 해결 방법을 게시했습니다. – Javatar4ever

+0

@ Javatar4ever 좋은 해결! –