2012-09-28 121 views
2

我有一個intresting問題。JTextPane和鍵盤輸入

我有一個JTextPane內的JScrollPane是與樣式文本poplate。文本從外部設備生成,然後傳遞給StyledDocument(它看起來像一個終端窗口)。我使用按鍵監聽器將每個字符輸入到設備,然後將字符從外部設備打印到文檔中。這是奇妙的工作!我不能更開心!

EXCEPT!

當我按下進入或退後空間窗口「boink」錯誤聲音播放。當我按下Enter或Backspace時,如何覆蓋JTextPane不播放「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) { 
      } 
     } 
    }); 

回答