2013-03-17 33 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