Java中每当server给client发一条消息,client的JTextArea如何同步该消息

例如Server给用户每分钟会发一条“!!!”,用户接受该信息并存在burfferedreader中,GUI如何在每次接收到信息的时候就把信息显示在JTextArea中... 例如Server给用户每分钟会发一条“!!!”,用户接受该信息并存在burfferedreader中,GUI如何在每次接收到信息的时候就把信息显示在JTextArea中 展开
 我来答
kriszhang2012
推荐于2016-09-06 · TA获得超过369个赞
知道小有建树答主
回答量:494
采纳率:0%
帮助的人:202万
展开全部
因为JTextArea中声明是这样的:
JTextArea mytxtarea = new JTextArea();
所以当client收到server端发过来的消息之后,在方法中调用:
mytxtarea.setText(server_message);

这样信息就会显示在JTextArea中。
追问
首先,服务器是每隔一段时间就会给客户端发消息,客户端时如何判断服务器有没有发消息,然后才是如何将消息处理进JTextArea。你只回答了如何处理进JTextArea。
其次,如果发回一个消息,应该用的是mytxtarea.append(server_message); 否则会覆盖整个JTextArea。
追答
你最开始的问题是:GUI如何在每次接收到信息的时候就把信息显示在JTextArea中?
而你现在的问题是:客户端时如何判断服务器有没有发消息?

是你不会问问题,还是我没有回答你的问题!
另外我现在怀疑你还没有搞明白客户端和服务器是怎么通信的,而不是如何判断服务器有没有发消息。
假设采用最普通的tcp或者udp的socket机制进行通信,那么服务器端是一直监听客户端的连接请求。客户端每次发出连接请求后,服务器就会返回消息给客户端,这时候客户端会更新UI,在这个过程中客户端无需判断,因为请求是客户端发出的,它当然知道消息有没有到达,或者说消息没有到达,程序就会一直卡在那条语句上,不会往下走。
我猜你是有另外一条逻辑,就是服务器在其他地方或者自生产生了一个消息,然后要主动推给客户端,这种情况下客户端没有请求连接,怎么办。通常的做法,是客户端去主动每个几秒拉一次,就是每隔几秒请求一次服务器端,没有消息就什么都不做,有就做。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式