2012-09-28 2 views
2

문제점이 있습니다.JTextPane 및 키보드 입력

스타일이 적용된 텍스트가있는 JScrollPane 내부에 JTextPane이 있습니다. 텍스트는 외부 장치에서 생성 된 다음 StyledDocument로 전달됩니다 (터미널 창처럼 보입니다). 필자는 키 누름 수신기를 사용하여 장치에 입력하는 각 문자를 보내고 문자는 외부 장치의 문서에 인쇄됩니다. 이것은 훌륭하게 작동합니다! 나는 더 행복 할 수 없었다!

예외!

Enter 또는 백 스페이스 키를 누르면 창 "boink"오류 사운드가 재생됩니다. 어떻게 JTextPane을 오버라이드 (override) 해 Enter 나 Backspace를 눌러 "boink"사운드를 재생하지 않게 할 수 있습니까?

감사합니다. 키 리스너를 고정

addKeyListener(new KeyAdapter() { 

     @Override 
     public void keyTyped(KeyEvent ke) { 
      //Absorb this action. 
     } 

     @Override 
     public void keyReleased(KeyEvent ke) { 
      //Absorb this action. 
     } 

     @Override 
     public void keyPressed(KeyEvent evt) { 

      char c = evt.getKeyChar(); 

      if (((byte) c) == 0x0A) { 
       c = ((char) 0x0D); 
      } 

      try { 
       rumIO.write(c); 
      } catch (Exception e) { 
      } 
     } 
    }); 

코드에 대한

현재 코드!

addKeyListener(new KeyAdapter() { 
     @Override 
     public void keyPressed(KeyEvent evt) { 
      InputMap inputMap = getInputMap(); 
      ActionMap actionMap = getActionMap(); 
      KeyStroke keyStroke = KeyStroke.getKeyStrokeForEvent(evt); 
      inputMap.put(keyStroke, "doNothing"); 
      actionMap.put("doNothing", new AbstractAction() { 

       @Override 
       public void actionPerformed(ActionEvent ae) { 
        //Do Nothing 
       } 
      }); 


      char c = evt.getKeyChar(); 

      if (((byte) c) == 0x0A) { 
       c = ((char) 0x0D); 
      } 

      try { 
       rumIO.write(c); 
      } catch (Exception e) { 
      } 
     } 
    }); 

답변

4

JTextPaneKey Bindings을 사용합니다. tutorialexample과 같이 기본 동작을 재정의 할 수 있습니다.

+1

내가 필요한 것! 감사. 나는 나의 수정을 위로 게시했다. – merjr