2013-03-17 24 views
0

我正在構建一個聊天程序。用戶可以選擇按JButton SEND或只需按下鍵盤上的ENTER鍵發送消息。這是我的代碼。JTextBox始終有換行

private void chatTextAreaKeyPressed(java.awt.event.KeyEvent evt) {           

     if(evt.getKeyCode() == KeyEvent.VK_ENTER) { 

      this.sendButtonActionPerformed(null); 
      this.chatTextArea.setText(null); // Clear JTextBox 
     } 
    } 

與此問題,是按ENTER鍵後,它將JTextBox設置一個空的新行。因此,無論我下一次輸入什麼,都將始終放在第二行,而不是以空白文本框開始。

任何人有任何想法?非常感激。

+1

有沒有原因爲什麼你沒有設置文本爲空字符串'「」'? – Aiias 2013-03-17 09:18:20

+1

*「..它設置JTextBox」*沒有這樣的事情。爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 – 2013-03-17 09:21:03

+0

setText(「」)與(null) – user1305850 2013-03-17 09:21:58

回答

1

您需要使用evt.consume()消耗事件以確保它不由文本字段本身處理。

這表示事件的所有處理都已完成,並且沒有其他偵聽器應對事件進行操作。

+0

太好了。這完美解決。非常感謝! – user1305850 2013-03-17 09:25:31

+0

恕我直言,這是一個壞主意。首先,'KeyListener'不支持從剪貼板粘貼,其次,我們實際上還沒有找出用戶實際使用的字段類型。如果他們使用'JTextField',這將由'ActionListener'處理,如果使用'JTextArea',那麼使用鍵綁定API會更好。在通知「KeyListener」時,按鍵筆畫可能已經根據不同的外觀和平臺發送到文檔 – MadProgrammer 2013-03-21 22:56:28