解决上述问题之后,作为“客户”的我,又觉得启动的时候启动的是若干个客户端窗口文件和一个服务器文件,服务器的输出都是在控制台输出的,有了之前解决问题的经验,考虑能不能写一个服务器窗口文件,将服务器的输出都放在窗口里面,这样启动的时候都是启动的是窗口文件,个人感觉好一些。
于是有了修改后的第二版程序:
1.将服务器输出的文本内容在窗口显示出来
2.添加关闭服务器的按钮
为了解决这些问题,特地
参考了 http://www.codeweblog.com/%E5%AE%9E%E7%8E%B0%E5%B0%86%E6%8E%A7%E5%88%B6%E5%8F%B0%E8%BE%93%E5%87%BA%E4%BF%A1%E6%81%AF%E8%BD%AC%E5%88%B0jtextarea%E4%B8%AD/
这篇博客,感觉这篇博客思路很奇妙啊,
主要运用了重写system相关方法的办法,可以将所有的syso代码块的输出都输出到area当中去。
添加代码为:
public void setConsoleMessateToArea() { OutputStream textAreaStream = new OutputStream() { @Override public void write(int b) throws IOException { area.append(String.valueOf((char)b)); } public void write(byte b[], int off, int len) throws IOException { area.append(new String(b, off, len)); } public void write(byte b[]) throws IOException { area.append(new String(b)); } }; PrintStream myOut = new PrintStream(textAreaStream); System.setOut(myOut); System.setErr(myOut); }
效果展示图:
可能会有的第三版程序:
1.添加强制某一个客户端下线功能(不过你一个服务器做这个是不是不太好?)
2.服务器显示出所有参与聊天的成员
3.客户端显示当前参与聊天的数目