2013-02-20 6 views
4

JavaFX에서 서식있는 텍스트 편집기로 contenteditable 본문과 함께 WebView를 사용하고 있습니다. 잘 작동하지만 키 누름을 들어야합니다. Enter 키와 ASCII 문자는 작동하지만 악센트 부호가있는 문자 (icelandic á 및 é)는 이벤트를 실행하지 않습니다. 나는 KeyEvent.KEY_PRESSED와 KeyEvent.KEY_TYPED를 시도했는데 어느 쪽도 악센트 부호가있는 문자를 사용하지 않았다.JavaFX KeyEvent 및 악센트 부호가있는 문자

InputMethodEvent는 악센트 부호가있는 문자에 대해 실행되지만, 해당 수신기를 설정하면 자동으로 이벤트를 소비하는 것으로 보이며 편집기에 연결되지 않습니다.

InputMethodEvent에서 문자를 소비하지 않는 악센트 부호가있는 문자를 입력 할 때 이벤트를 수신하는 방법을 아는 사람이 있습니까?

+0

어떤 OS 및 JavaFX 버전을 사용합니까? –

답변

1

당신은 Node.addEventHandler 방법 (이 경우 귀하의 웹보기)를 모든 노드에의 KeyEvent 이벤트 핸들러를 추가 할 수 있습니다, 당신은 을 KeyEvent.KEY_TYPED 이벤트 유형을 처리하는 경우는 KeyEvent.getCharacter 방법으로 입력 된 유니 코드 문자를 얻을 수 있습니다. 이 예를 참조하십시오

WebView myWebView = new WebView(); 
myWebView.addEventHandler(KeyEvent.KEY_TYPED, 
        new EventHandler<KeyEvent>() 
        { 
         @Override 
         public void handle(KeyEvent event) 
         { 
          System.out.println("Unicode character typed: "+event.getCharacter()); 

          switch (event.getCharacter()) 
          { 
          case "á": 
           System.out.println("Typed accented a"); 
           break; 
          case "é": 
           System.out.println("Typed accented e"); 
           break; 
          case "í": 
           System.out.println("Typed accented i"); 
           break; 
          case "ó": 
           System.out.println("Typed accented o"); 
           break; 
          case "ú": 
           System.out.println("Typed accented u"); 
           break; 
          default: 
           System.out.println("Typed other key " + event.getCode()); 
           break; 
          } 
         } 

        }); 

당신이 다른 문자열은 "A"를 고려할 경우 유용 할 수있는 등, 로케일, 대문자, 소문자를 무시하고 비교하려는 경우 Collator 클래스를 살펴 할 수 있습니다 및 "a"는 동일합니다.

행운을 빈다.

관련 문제