2017-02-07 14 views
1

다음은 JavaFX에서 ctrl + c 조합에 대한 작업을 설정 한 코드입니다. TextField command_line에 포커스가있을 때는 작동하지 않습니다. 왜?TextField에 포커스가있는 동안 CTRL + C가 작동하지 않습니다.

public void setCtrlC() { 
    command_line.getScene().getAccelerators().put(new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_ANY), 
      new Runnable() { 
       @Override 
       public void run() { 
        LOGGER.debug("CTRL+C pressed"); 
        try { 
         if (tab_toradex.isSelected()) { 
          bw.write(3); 
          bw.flush(); 
         } 
         if(tab_novatel.isSelected()){ 
          bw2.write(3); 
          bw2.flush(); 
         } 
        } catch (IOException e) { 
         LOGGER.debug("CTRL+C command failed"); 
        } 
       } 
      }); 
} 

감사! 이 해결할 확인

+0

가능한 용액 [이 질문]로 응답에서 설명 용으로 만 작동 http://stackoverflow.com/questions/31732583/pass-context-menu-shortcuts-up-from-editing-control). 장면/루트에 이벤트 필터를 추가하는 것보다 간단한 해결책이 있는지 확신하지 못합니다. – Itai

+0

Control + C (Windows 이상)가 기본적으로 지원됩니다. 사용자가 텍스트를 복사하려고 할 때 로그에 남기를 원하십니까? 실제로 여기에 새 스레드를 시작 하시겠습니까? Runnable은 결코 시작되지 않습니다 ... – GOXR3PLUS

+0

저는이 사실을 정말로 확신하지 못합니다. 그러나 저는 텍스트 필드 컨트롤이 자체 가속기를 가지고 있으며, 여러분의 것을 감청하고 있다고 생각합니다. – Jai

답변

0

: 텍스트 필드가 집중하면서 한편

final KeyCombination keyCombinationShiftC = new KeyCodeCombination(KeyCode.C, KeyCombination.CONTROL_DOWN); 

public void setCtrlC() { 

    command_line.setOnKeyPressed(new EventHandler<KeyEvent>() { 

     @Override 
     public void handle(KeyEvent event) { 
      if (keyCombinationShiftC.match(event)) { 
       LOGGER.debug("CTRL+C pressed"); 

       try { 
        if (tab_toradex.isSelected()) { 
         bw.write(3); 
         bw.flush(); 
        } 
        if(tab_novatel.isSelected()){ 
         bw2.write(3); 
         bw2.flush(); 
        } 
       } catch (IOException e) { 
        LOGGER.debug("CTRL+C command failed"); 
       } 
      } 
     } 
    }); 
} 

, 이제 (