如何在另一个对象的JTextArea中显示一个对象的数据?

时间:2012-02-17 06:51:44

标签: java swing jframe jtextarea

我有一个名为handler的类,这个类处理来自浏览器的http请求,我想在另一个名为HttpHeadersFrame的类的JTextArea中显示请求的http头!这就是我试过的

 public class Handler
 {
     HttpHeadersFrame headersFrame; //This frame contains JTextArea component
     private Request request = null;
     public String requestMessage;
     private Socket socket = null;

     public Handler(Socket socket)
     {
         this.socket = socket;
         this.headersFrame = new HttpHeadersFrame();
         headersFrame.setVisible(true);
     }

     public void processRequest()
     {
        requestMessage = request.toString(System.getProperty("line.separator"));
        headersFrame.getRequestTextArea().append(requestMessage);
     }
 }

当我运行代理时,我在JTextArea中没有收到任何消息!任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

processRequest方法中,您可以在每个传入请求中创建新的HttpHeadersFrame。除非您显示所有这些帧,否则您将不断更新不可见的帧而不是唯一可见的帧。因此,将可见的HttpHeadersFrame实例传递给Handler类iso,创建新实例,您的问题就会得到解决。

哦,请确保在事件调度线程上更新Swing组件。

答案 1 :(得分:1)

首先,您的代码段中没有正确使用Swing组件。 在使用之前,您应该在构造函数中初始化requestTextArea字段。 而且你必须用语句

将它添加到框架中
this.getContentPane().add(requestTextArea);

您应该将HttpHeadersFrame实例传递给您的Handler类,使此实例可见,即

headersFrame = new HttpHeadersFrame();
headersFrame.setVisible(); 

requestMessage附加到此实例的textArea字段将起作用。