Mac*_*cha 5 java user-interface swing event-handling
我在通过单击发送按钮调用的方法中有以下代码,或者在一段代码中按消息文本字段中的Enter键.
// In class ChatWindow
private void messageTextAreaKeyPressed(java.awt.event.KeyEvent evt) { // Event handler created by Netbeans GUI designer to call this method.
if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
sendMessage();
}
}
public void sendMessage() {
String currentMessage = messageTextArea.getText();
addMessage("You", currentMessage);
app.sendMessage(currentMessage, 1);
messageTextArea.setText("");
}
Run Code Online (Sandbox Code Playgroud)
最后一段代码使文本区域空白.但是,在按Enter按钮发送消息后,文本框包含换行符,而不是为空.
我的猜测是,在我的事件处理程序运行之后,然后添加了换行符.如何停止添加换行符?
akf*_*akf 14
请evt.consume()在致电后尝试添加sendMessage()
private void messageTextAreaKeyPressed(java.awt.event.KeyEvent evt) {
if(evt.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
sendMessage();
evt.consume();
}
}
Run Code Online (Sandbox Code Playgroud)
Actiona中Enter键的默认设置JTextArea是如您所见插入新行.所以解决方案是Action用自定义替换默认值Action.这种方法的好处是它Action也可以被JButton(或JMenuItem等)使用.An Action基本上与a相同ActionListener,您需要做的就是实现该actionPerformed()方法.
阅读Key Bindings以了解如何完成此操作.所有Swing组件都使用Key Bindings.