JAVA-Jtextarea 聊天软件 屏蔽回车键换行

最近课程作业在做一个聊天软件,想要实现按回车键发送消息,按crtl+回车键换下一行的功能。结果实测发现如果使用按键监听函数addKeyListener触发按键事件的话不仅会把文本发出去,还会在发送文本框内加一个回车键换行,也就是按下回车后不仅执行了addKeyListener事件还执行了系统默认的【输入回车符】的事件。

下面是失败的截图,按下回车发送后会在发送文本框添加回车符号,导致后面发的都是换过行的
失败截图,按回车发送后会在发送文本框添加回车字符
网上查了很多无果,倒是发现textarea的相似问题比较多,但是没有Jtextarea的。输入键盘事件后查看函数,发现里面的consume函数正好可以符合需求:屏蔽系统的默认事件。
在这里插入图片描述
在按键监听函数内添加e.consume(),实现了屏蔽回车键换行。
按键监听函数:

		send_area.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent e) {
				//crtl+回车切换下一行
				if(e.isControlDown() && e.getKeyCode() == KeyEvent.VK_ENTER) {
					e.consume();
					send_area.append("\n");
				}
				//回车键发送
				else if(e.getKeyCode() == KeyEvent.VK_ENTER) {
					//DEBUG:发送后接收域变色
					e.consume();
					recv_area.setBackground(Color.green);
					
					//发送并清空发送域,在接受域的下一行回显
					String send_content = new String();
					send_content = send_area.getText();
					send_area.setText("");
					recv_area.append(send_content);
					recv_area.append("\n");
				}
				
			}
		});

其中的各种area什么的是我用swing编GUI时的容器。附一个成功截图。
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值