java如何绑定swing。JTextArea到PrintStream以接受数据
客户端有gui和额外的线程(用于处理socket输入并将其打印到PrintStream类型的Pass对象)。gui表单有new javax.swing.JTextArea()
。我需要传递给线程对象PrintStream
以写入:ClientThreadIn(PrintStream inOutput){...}
。如何使用PrintStream
创建/绑定gui JTextArea以接受数据表单ClientThreadIn
客户:
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
ClientThreadIn threadIn = new ClientThreadIn(in, System.out); // client passes it's System.out to thread for writing
所以JTextArea应该类似于控制台。它应该能够接受来自线程的数据(实际上是线程写入gui的PrintStream)。。。 有没有类似于JTextArea的东西。getInputStream()
# 1 楼答案
一种方法是创建一个类,将JTextArea链接到OutputStream,比如称为TextAreaOutputStream的OutputStream,并让它扩展OutputStream。给它一个StringBuilder对象,以保存它在
write(int b)
覆盖中构造的字符串,并给它一个对要向其写入文本的JTextArea的引用。然后,当遇到新行字符时,将字符串写入JTextArea,但一定要在Swing事件线程或EDT上执行此操作例如:
然后,将其包装在PrintStream对象中并让套接字使用它是很简单的